浅読みモデル
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