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

Posted 牛顿的小脑

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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__的主要内容,如果未能解决你的问题,请参考以下文章

JS对象构造器函数和原型对象之间的关系

js中啥是原型对象和原型链

js--原型继承

关于js的对象原型继承

javascript---原型

JS原型与原型链