首页 > 代码库 > js原型对象,每个new出来的新对象都有独立的原型对象__proto__

js原型对象,每个new出来的新对象都有独立的原型对象__proto__

刚才看一篇博文的时候, 动手测试了一下 JavaScript的原型链, 原型对象,发现每个构造器(赋给了某个 prototype ) new 出来的对象都有各自独立的原型对象 __proto__.

prototype 与 __proto__指向的都是同一个对象,一个是“类”上面的,一个是“对像”上面的。 prototype 从字面上“type”就说明了,这个代表一个“类”, 是一个类别、集合,而不是具体的。

类似于 C++语言中类与对象的关系。 而__proto__就是根据具体 的类“prototype” , 实例化处理的具体的某个对象, 通过prototype new不同的对象的__proto__是彼此独立的。。

 好像错了!!看下图

技术分享

错了,错了,原来下面这种测试代码理解错了。 我们给 s.name 赋值的时候,并没有去改到s.__proto__这个对象的name属性。而是 给s对象新增了 name 属性。其输出 s.name的时候,

并没有去 s.__proto__上面找 name 属性,而是直接在 s 对象本身上面就发现了 name 属性, 所以并不会向上在s.__proto__原型链上去找name 属性。!!刚才理解错了,还好反应过来了。

测试代码 如下:

function Fun(){
  //构造器
};
Fun.prototype = {
 name : ‘ysr‘
};

var s  = new Fun();
s.name = ‘pxk‘;
console.log(s.name); //pxk
var t = new Fun();
console.log(t.name); //ysr

  

js原型对象,每个new出来的新对象都有独立的原型对象__proto__