手机版

js原型链原理

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

最初,ECMAscript的发明者设计了这个链表,以便在保持继承属性的同时简化语言。你学过数据结构中的链表吗?链表中有一个位置相当于指针,指向下一个结构。所以__proto__是一样的。无论何时定义原型,都相当于将实例的__proto__指向一个结构。然后,指向的结构被称为实例的原型。文字有点费解,复制代码如下:varfoo={x:10,y :20 };Figure  1. A  basic  object  with  a  prototype.

当我没有指定__proto__时,foo也会保留这样的属性。如果有明确的点,那么链表就会被链接。很明显,下图中,B和C共享了A的属性和方法,同时又有自己的私有属性。__proto__默认值也指向。它引用最高级别的object.prototype,object.prototype的_ _ prototype _ _为空。复制的代码如下:VAR A={x: 10,计算:函数(z){返回这个。xThis.y z } }var b={ y: 20,_ _ proto _ _ : a };var c={ y: 30,_ _ proto _ _ : a };//调用继承的方法b . calculate(30);//60Figure  2. A  prototype  chain.

了解属性链接指针__proto__的性质。理解构造函数。定义原型时,将构造一个原型对象,这个原型对象将存储在构造这个原型的功能的原型方法中。复制代码如下:函数Foo(y){ this . y=y;} foo . prototype . x=10;foo . prototype . calculate=function(z){ return this . x this . y z;};var b=new Foo(20);alert(b . calculate(30));Figure  3. A  constructor  and  objects  relationship.

[参考文件]http://dmitrysoshnikov.com/ecmascript/javascript-the-core/

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