ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

原型与原型链

2021-03-11 00:02:05  阅读:127  来源: 互联网

标签:对象 read 实例 原型 prototype 属性


原型与原型链

1.原型的概念

JavaScript的每个对象都继承另一个对象,后者称为“原型(prototype)”对象。
原型对象上的所有属性和方法,都会被派生对象共享。

每个对象都会在其内部初始化一个属性,就是prototype(原型)。
通俗来说,原型就是一个模板,更准确的说是一个对象模板。

实例示范1

function Student (name) {
    this. name = name;
}
Student . prototype.read = function() {
    alert ("读书") ;
}
var xiaoming = new Student ('小明') ;
var xiaohong = new Student('小红') ;
console.log(xiaoming.name);   //小明
console.log(xiaohong .name); //小红
xiaoming.read(); //读书

xiaohong.read(); //读书

原型对象的方法不是实例对象自身的方法。只要修改原型对象,变动就立刻会体现在所有实例对象上。

实例示范2

Student .prototype.read = function(){

    alert ("read") ;
}

xiaoming.read(); //read

xiaohong.read(); //read

如果实例对象自身就有某个属性或方法,它就不会再去原型对象寻找这个属性或方法。

实例示范3

xiaoming.read = function() {

alert ("阅读") ;
}

xiaoming.read(); //阅读

xiaohong.read(); //read

原型对象的作用,就是定义所有实例对象共享的属性和方法。这也是它被称为原型对象的含义,而实例对象可以视作从原型对象衍生出来的子对象。

2.原型链是什么?

当我们访问一个对象的属性时,如果这个对象内部不存在这个属性,那么他就会去prototype里找这个属性,这个prototype又会有自己的prototype,于是就这样一直找下去,也就是我们平时所说的原型链的概念。简单来说就是利用原型让一个引用类型继承另一个引用类型的属性和方法。

对象的属性和方法,有可能是定义在自身,也有可能是定义在它的原型对象。由于原型本身也是对象,又有自己的原型,所以形成了一条原型链(prototype chain)。 比如,a对象是b对象的原型,b对象是c对象的原型,以此类推。

3.“原型链”的作用是什么?

“原型链”的作用是,读取对象的某个属性时,JavaScript 引擎先寻找对象本身的属性,如果找不到,就到它的原型去找,如果还是找不到,就到原型的原型去找。如果直到最项层的Object.prototype还是找不到,则返回undefined。

如果对象自身和它的原型,都定义了一个同名属性,那么优先读取对象自身的属性,这叫做“覆盖(overriding)”。

需要注意的是,一级级向上, 在原型链寻找某个属性,对性能是有影响的。所寻找的属性在越上层的原型对象,对性能的影响越大。如果寻找某个不存在的属性,将会遍历整个原型链。

4.null和undefined的区别

undefined是一个表示"无"的原始值。

null用来表示尚未存在的对象,它没有自己的原型对象。

标签:对象,read,实例,原型,prototype,属性
来源: https://blog.csdn.net/m0_55853116/article/details/114649668

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有