Javascript ({})和Object.prototype之间的差异
这很有效Javascript ({})和Object.prototype之间的差异,javascript,Javascript,这很有效 if (typeof Object.prototype.clone === "undefined"){ Object.prototype.clone = function() {} }` 但为什么这里没有定义克隆 if (typeof ({}).clone === "undefined"){ ({}).clone = function() {} }` `您的第二个代码片段确实“有效”,但它没有做任何有用的事情 ({}).clone = fun
if (typeof Object.prototype.clone === "undefined"){
Object.prototype.clone = function() {}
}`
但为什么这里没有定义克隆
if (typeof ({}).clone === "undefined"){
({}).clone = function() {}
}`
`您的第二个代码片段确实“有效”,但它没有做任何有用的事情
({}).clone = function() {}
创建使用({})
创建的单个空对象的属性。您给该对象一个“克隆”属性,但由于您没有将该对象保存到任何位置,最终的效果是不会发生永久性的变化
另一方面,
Object.prototype
,是对运行时进行影响所有对象的持久更改的一种方法。有许多在线和已发布的资源用于研究JavaScript原型继承系统是如何工作的。除了这里关于Stackoverflow的许多问题之外。它们都是未定义的
。此外,您的语法不正确。它不应该是({})。clone
,它应该是:{}。clone
@ScottMarcus{}。clone
至少在V8中是一个语法错误<代码>({})。克隆是正确的。谢谢大家。“我很欣赏,当然,首先修改本地原型通常是个坏主意。”@ScottMarcus是的,尽管这种做法的弊端因情况而异。例如,对于没有第三方脚本的web应用程序,如果仔细使用Object.defineProperty()
,这只是一种实现选择。