在Javascript中,我似乎对构造函数链继承以及原生对象有些遗漏。例如:
function ErrorChild(message) { Error.call(this, message); }
ErrorChild.prototype = Object.create(Error.prototype);
var myerror = new ErrorChild("Help!");
为什么在执行这些语句之后,
myerror.message
被定义为 ""
?我本来期望 Error 构造函数会将其定义为 "Help!"(并覆盖默认值Error.prototype.message
),就像我执行下面的代码一样:var myerror = new Error("Help!")
非常感谢!
Error.call(this)
,因为它会创建一个不必要的对象,在构造函数完成时被垃圾回收。 =) - Moritz RoesslerErrorChild.prototype = Error.prototype
也足够了=) - Moritz RoesslerObject.create
。请修复你的代码。 - Bergi