1.Object.create(obj,{})方法實現
var car = {
color:'red',
getColor:function () {
console.log(this.color)
}
}
newObj = Object.create(car,{
t1:{
value:'zzzzzzz',
writable:true
},
bar: {
configurable: false,
get: function() { return bar; },
set: function(value) { bar=value }
}
});
newObj.getColor(); // red
function Person(){}
Person.prototype.name = 'aaa';
Person.prototype.sayName = function(){
alert(this.name);
};
var person1=new Person();
// 繼承:
function Teacher(){}
Teacher.prototype = new Person();
Teacher.prototype.constructor = Teacher;
var teacher = new Teacher();
alert(teacher.age);
Person.prototype.constructor ;//指向構造函數 Person
person1.__proto__ == Person.prototype ;//創建的實例包含__proto__屬性,并且指向構造函數的原型;
當訪問對象 teacher.age的時候,因為沒有實例上沒有這個屬性,會通過實例的__proto__尋找到構造函數 Teacher的原型對象;
如果Teacher的原型上沒有,
由于Teacher的原型對象指向了Person的實例person1,所以如果person1沒有age屬性,
通過__proto__尋找到構造函數Person的原型對象;
如果Person.protorype仍然不包含age屬性,就會繼續向上找,直到Object 的原型