Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ({})和Object.prototype之间的差异_Javascript - Fatal编程技术网

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()
,这只是一种实现选择。