【发布时间】:2014-11-26 18:22:44
【问题描述】:
据我了解,在 JavaScript 中,每个对象都有一个 prototype,并且它公开了一些默认属性。我有以下代码,我试图通过prototype 设置两个对象的 Year 属性。但是两个调用都失败了。
如果我无权访问prototype,如何为任何对象覆盖toLocalString()?请注意,下面的代码是测试prototype 属性,但我的意图是覆盖toLocalString() 方法。
var car = {
Make: 'Nissan',
Model: 'Altima'
};
car.Year = 2014;
alert(car.Year);
alert(car.prototype); // returns undefined
car.prototype.Year = 2014; // Javascript error
// --------------
function Car() {
this.Make = 'NISSAN';
this.Model = 'Atlanta';
}
var v = new Car();
v.prototype.Year = 2014; // JavaScript error
alert(v.prototype);
【问题讨论】:
-
在你的底部示例中,它应该是
Car.prototype.Year = 2014- 你在对象函数上设置原型 - 而不是创建的实例。 -
你的意思是
toLocaleString()而不是toLocalString()还是你想实现自己的方法toLocalString()? -
prototype属性属于一个函数。该函数在使用new调用时使用该prototype属性来构造实例对象。在非函数对象上设置prototype无效。
标签: javascript prototype javascript-objects