原型笔记(一)

         Person.prototype.name = "sunny";
                function Person () {
                }
                var person = new Person();
                Person.prototype = {
                    name : "cherry"
                }

Person的name最终为“sunny”,原因如下:

构造函数生成时,会在函数中隐式:

    function Person () {
        var this = {__proto__:Person.prototype}
                }

此时name为“sunny”已被储存在__proto__中

再更改

Person.prototype = {
                    name : "cherry"
                }

并不影响__proto__,因此Person.name输出为sunny。

 

 

 

整个过程简单举例就如下:

    Person.prototype = {name = "a"}
    __Proto__ = Person.prototype;
    Person.prototype = {name = "b"}

再简化概念就如下:

var a = 1;
var b = a;
a = 2;
console.log(b);

b必然是1

 

 

 

 

 

 

 

A  instanceof B  判断的是,A对象 是否是  B对象构造出来的,如果是就返回true  例如  

      function Person () {};
      var person = new Person();
    person instanceof Person;                 //返回true

但真正更加细节的说法是:判断A对象的原型链上,是否有B的原形

因为在上方代码中,  [] instanceof Object  也可直接返回true。

posted @ 2019-12-13 17:54  另一场风花雪月  阅读(101)  评论(0)    收藏  举报