理解JavaScript原型链
每个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或者邮箱删除。