最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

js原型链原理看图说明_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:03:39
文档

js原型链原理看图说明_javascript技巧

js原型链原理看图说明_javascript技巧:当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表。 在数据结构中学过链表不,链表中有一个位置相当于指针,指向下一个结构体。 于是乎__proto__也一样,每当你去定义一个prototype的时候,相当于把该实例的__pro
推荐度:
导读js原型链原理看图说明_javascript技巧:当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表。 在数据结构中学过链表不,链表中有一个位置相当于指针,指向下一个结构体。 于是乎__proto__也一样,每当你去定义一个prototype的时候,相当于把该实例的__pro


当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表。
在数据结构中学过链表不,链表中有一个位置相当于指针,指向下一个结构体。

于是乎__proto__也一样,每当你去定义一个prototype的时候,相当于把该实例的__proto__指向一个结构体,那么这个被指向结构体就称为该实例的原型。

文字说起来有点儿绕,看图说话
代码如下:
var foo = {
x: 10,
y: 20
};


当我不指定__proto__的时候,foo也会预留一个这样的属性,

如果有明确的指向,那么这个链表就链起来啦。

很明显,下图中b和c共享a的属性和方法,同时又有自己的私有属性。

__proto__默认的也有指向。它指向的是最高级的object.prototype,而object.prototype的__proto__为空。
代码如下:
var a = {
x: 10,
calculate: function (z) {
return this.x + this.y + z
}
};
var b = {
y: 20,
__proto__: a
};

var c = {
y: 30,
__proto__: a
};

// call the inherited method
b.calculate(30); // 60


理解了__proto__这个属性链接指针的本质。再来理解constructor。

当定义一个prototype的时候,会构造一个原形对象,这个原型对象存储于构造这个prototype的函数的原形方法之中.
代码如下:
function 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));

【参考文档】

http://dmitrysoshnikov.com/ecmascript/javascript-the-core/

文档

js原型链原理看图说明_javascript技巧

js原型链原理看图说明_javascript技巧:当初ECMAscript的发明者为了简化这门语言,同时又保持继承的属性,于是就设计了这个链表。 在数据结构中学过链表不,链表中有一个位置相当于指针,指向下一个结构体。 于是乎__proto__也一样,每当你去定义一个prototype的时候,相当于把该实例的__pro
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top