为什么重新分配Object.prototype不起作用?

0 javascript syntax prototype function object

为什么这不起作用?

// this one works as I expected, when objSayHello()
Object.prototype.objSayHello = function(){alert('Hello,from OBJECT prototype')};
// NOT working !
Object.prototype ={objSayHello: function(){alert('Hello,from OBJECT prototype')}};

objSayHello();
Run Code Online (Sandbox Code Playgroud)

eye*_*ess 6

  1. 因为您已经替换了Object原型,所以您objSayHello要向任何从Object(所有对象)下降的对象添加方法.

  2. 不要更换Object.prototype.

你可能想要的是:

someObj.prototype.objSayHello = function(){alert('Hello,from OBJECT prototype')};
Run Code Online (Sandbox Code Playgroud)

然后用以下方法调用它:

someObj.objSayHello();
Run Code Online (Sandbox Code Playgroud)

你似乎要做的是:

Object.prototype.objSayHello = function(){alert('Hello,from OBJECT prototype')};
Run Code Online (Sandbox Code Playgroud)

但这可能是一个坏主意,因为for...in如果处理不当,它将与迭代器()冲突.