【发布时间】:2014-09-26 19:41:19
【问题描述】:
是否可以做这样的事情 - 强制标准 javascript 对象从自定义对象继承? (没有实际用途,只是反问)。
var MyObject=function(){
this.name="name from MyObject";
}
Array.prototype=new MyObject();
var array = new Array();
console.log(array.name); //undefined
【问题讨论】:
-
你不能。为什么不直接向
Array.prototype添加属性?效果基本一样。 -
@squint:在 JavaScript 中扩展内置对象通常被认为是个坏主意,不是吗?当然,这个想法要差几个数量级。
-
你可以看看spec 发现
Array.prototype是不可写的。所以,理论上是可以的,但是要先检查属性的配置。 -
Felix Kling:虽然这在 ECMAScript 5 中是正确的,但在 ECMAScript 3 中却不一定正确,它(遗憾地)仍然安装在大量机器上。
-
@MikeHofer:不,最佳实践是定义一个整体策略,将其作为一个整体合理地协同工作。这可能涉及扩展本机原型,也可能不涉及。一种不好的做法是,将各种策略结合使用会产生错误。