手机版

用简单的方法理解javaScript原型链

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

本文展示了javaScript的原型链。分享给大家参考。具体分析如下:

至于javascript原型链,曾经是一个很深的东西,但是一直没有搞清楚。今天看了一些介绍,发现了这张图,说明没有语言能比这张图说得更清楚。

看完这张图,我突然对javascript有了质的认识。

javascript有两个原型链:显式和隐式:

显式原型链:我们共同的原型;

隐式原型链:一般环境下不可访问,即不可见,但可以在FireFox中通过__proto__访问;隐式原型链用于在javascript引擎中搜索原型链,它是通过显示原型链来设置的。1.原型和原型的概念。

Prototype是一个函数的属性(每个函数都有一个prototype属性),它是一个指向对象的指针。它是一个显示修改对象原型的属性。

__proto__是对象拥有的内置属性(请注意:prototype是函数的内置属性,__proto__是对象的内置属性),是JS内部用来查找原型链的属性。

Chrome和FF可以访问对象的__proto__属性,但IE不能。

二、新生的过程。

var Person=function(){ };var p=新人员();新流程分为以下三个步骤:

(1)var p={ };也就是说,初始化一个对象p(2)p . _ _ proto _ _ _=person . prototype;(3)人称呼叫(p);也就是说,构造p也可以称为初始化p.

关键在于第二步,我们来证明一下:

var Person=function(){ };var p=新人员();alert(p . _ _ proto _ _===person . prototype);这段代码返回真。说明我们的第2步是正确的。

三.例子

var Person=function(){ };person . prototype . say Name=function(){ alert('我叫Jacky ');};person . prototype . age=27;var p=新人员();p . SayName();p是一个对象,它的引用指向Person。我们在Person的原型上定义了sayName方法和年龄属性。当我们执行p.age时,我们将首先在这个内部(也就是说,在构造函数内部)查找它,如果找不到它,就沿着原型链跟踪它。

这里的向上追溯是怎么上去的?这里,使用__proto__属性链接到原型(即Person.prototype)进行搜索。最终在原型上找到了年龄属性。

希望这篇文章对你的javascript编程有所帮助。

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