- 之前我們已經學過了原型如何使用,那麼現在我們介紹一種簡單原型的使用方式:即直接通過對象字面量來重寫整個原型對象(這種方法會改變原型對象的構造器)
- ECMA5中的Object.defineProperty()方法可以為原型對象重新加入構造器。
- 原型的動态性(注意原型和建立執行個體的前後順序)
//簡單原型
function Person(){
}
Person.prototype = {
//constructor : Person,
name : 'z3',
age : 20,
job : '前端開發',
sayName : function(){
console.log('我是一名' + this.job);
}
}
//ECMA5 給原型對象從新設定構造器方法 Object.defineProperty()
//接受3個參數,1:重設構造器的對象,2:設定什麼屬性,3:options配置項
Object.defineProperty(Person.prototype,'constructor',{
enumerable : false,
value : Person
});
var p1 = new Person();
console.log(p1.age);
p1.sayName();
console.log(p1.constructor); //function Person(){}
console.log(Person.prototype.constructor); //function Person(){}
for(arrt in p1){
console.log(arrt);
}
//原型的動态性
function Person(){
}
var p1 = new Person();
Person.prototype = {
constructor : Person, //必須表示原型的構造器
name : 'z4',
age : 50,
height : 170,
sayName : function(){
console.log('我身高為:'+this.height);
}
}
console.log(p1.name); //undefined 原型對象裡沒有任何屬性和方法
//注意簡單原型使用的順序(執行個體對象必須在原型對象後建立)
var p2 = new Person();
console.log(p2.sayName());