浅読みモデル

1916 ワード

対象:javascriptでは、対象は任意の無秩序なキーペアのセットです.もしそれがメインデータタイプではないなら、それは対象です.プロトタイプ:プロトタイプはオブジェクトで、他のオブジェクトは属性の継承を行うことができます.
  :prototype. __proto__. constructor

function fn1(){
this.name="zhang"
}
fn1.prototype.age=13;
function fn2(){
}
fn2.prototype=new fn1();
var foo=new fn1()
var fn=new fn2();

console.log(fn.constructor);
//function fn1(){this.name="zhang"}
//        constructor  ,                   

console.log(fn2.prototype) ;
//fn1 {name: "zhang", age: 13}   
//prototype             ,     。

console.log(foo.__proto__) ;
//fn1 {age: 13}
console.log(fn.__proto__) ;
//fn1 {name: "zhang", age: 13}             prototype
//__proto__          。

//              ,               prototype       

console.lo(fn1.prototype.constructor);
//function fn1(){this.name="zhang"}        
//      prototype  ,  prototype constructor           。

console.log(fn1.constructor)
//function Function()              

console.log(fn.constructor.prototype);//fn1 {age: 13}    fn     

console.log(fn.constructor.prototype==fn1.prototype);//true fn     fn1     

//       ?
//                ,          ,              
//(  :              )
原型を変更する:
    function  Person(name){
    this.name=name;
    }
    var a = new Person("xx");

    Person.prototype.sayName=function(){
        console.log(this.name)
    }
    //    
    var aa = new Person("xl")

    console.log(a.constructor) ;//function Person(name)
    console.log(a.constructor == Person) ;//true
    console.log(aa.constructor) ;//function Person(name)
    console.log(aa.constructor == Person) ;//true

    Person.prototype = {
        sayname:function(){
            console.log(this.name)
        }
    };
    //       

    var b = new Person("XX");
    console.log(b.constructor);
    //function Object()
    console.log(b.constructor == Person) ;//false