我试图了解对象的属性如何与对象原型上定义的方法相关。以下代码打印“ECMA 样式 5”,而我希望它打印“ECMA 样式 3”。
var util = require('util');
function MyError() { }
util.inherits(MyError, Error);
Object.defineProperty(MyError.prototype, 'toJSON', {
enumerable: false,
value: function () {
return 'ECMA5 style';
}
});
MyError.prototype.toJSON = function() {
return 'ECMA3 style';
}
var x = new MyError();
console.log(JSON.stringify(x));
我正在阅读文章1,但我无法理解为什么不打印样式 3,因为它是在文件中定义的第二个。这不应该覆盖现有的方法定义吗?
我正在运行节点 v0.10.21