手机版

理解JavaScript原型链

时间:2021-09-14 来源:互联网 编辑:宝哥软件园 浏览:

每个JavaScript对象都与另一个对象相关联,而相关联的对象就是我们所说的原型。每个对象都从原型继承属性和方法。有一个没有原型的特殊对象,就是Object。这将在下图中解释。

例如,我们首先声明一个函数Student():

函数Student(name){ this . name=name;this . hello=function(){ alert(` hello,$ { this . name } `));}}这个函数包含一个属性名和一个方法hello。在JavaScript中,可以通过new关键字调用Student函数(不写new就是普通函数,写new就是构造函数),返回一个原型指向Student.prototype的对象,如下图:

var小明=新生('小明');alert(小明. alert//小明小明. hello();//你好,小明。如果我们想确认我们的假设是否正确,我们会想比较小明. prototype和Student.prototype的相等性,但是小明没有prototype属性,但是可以用_ _ proto _ _查看。接下来,我们使用这些属性来查看小明、学生和对象之间的原型链:

文件。onreadystatechange=function(){//interactive表示文档已被解析,但浏览器仍在加载链接的资源if (document。readystate==' interactive') {var小明=新生('小明');alert(小明. alert小明. hello();console.log('小明。_ _ proto _ _:');console.log(小明。_ _ proto _ _);console . log(' student . prototype:');控制台.日志(学生.原型);console.log('小明。_ _ proto _ _===student . prototype:‘小明。_ _ proto _ _===student . prototype);console . log(' student . prototype . constructor:' student . prototype . constructor ');console . log(' student . prototype . prototype:' student . prototype . prototype ');console . log(' student . prototype . _ _ proto _ _:');console . log(student . prototype . _ _ proto _ _);控制台.日志(对象.原型);console . log(' student . prototype . _ _ proto _ _===object . prototype:' student . prototype . _ _ prototype _===object . prototype);} }

七个红色箭头指向七个console.log语句的输出结果。用图例显示,如图所示:

测试显示对象、原型和学生。原型。_ _原型_ _指向不同的对象。这个对象就是前面提到的没有原型的对象,我们可以看到它没有对应的原型或者_ _ prototype _ _属性:

从图中获得的原型链如下:

因为我的语言表达能力有限,理解也比较简单,所以插图很多,希望指出错误。谢谢你。

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:理解JavaScript原型链是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。