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 的原型