访问Javascript对象原型
这个问题在这里已经有了答案:
您可以访问原型属性,但它仅存在于Function
s上。
var car = {
Make: 'Nissan',
Model: 'Altima'
};
这与以下内容相同:
var car = new Object();
car.Make = 'Nissan';
car.Model = 'Altima';
那么, car.__proto__ === Object.prototype
。
car.prototype === undefined
因为prototype
属性只存在于Function
s上(如我已经说过的)。
function Car() {
this.Make = 'NISSAN';
this.Model = 'Atlanta';
}
这里Car.prototype
指向Object
一个实例,因为Car
是一个函数,当函数声明被评估时,它们的prototype
被设置为Object
一个实例。
Car.prototype.Year = 2014; //all Car *instances* will have a Year property set to 2014 on their prototype chain.
var c = new Car(); //create an instance
console.log(c.Year); //2014
覆盖对象的原型链上的方法就像在对象上创建对应的方法一样简单:
var myObject = new Object();
myObject.toLocaleString = function() {
//my own implementation
};
您可能想要修改构造函数原型:
function Car(year, make, model) {
this.year = year;
this.make = make;
this.model = model;
}
Car.prototype.toLocaleString = function() {
return [this.year, this.make, this.model].join(' ');
};
var civic = new Car(2014, 'Honda', 'Civic');
civic.toLocaleString(); // => "2014 Honda Civic"
关于Object.prototype
这篇MDN文章可能会有所帮助。