这些天我一直在使用这些脚本,经过一系列的研究,我仍然找不到答案。
所以这是问题,我想(例如)将一个函数添加到一个Object(例如.length(),因为本机还没有这个),我试过了:
Object.prototype.length = function() { /* Some fancy work */ }; //It works!
Object.prototype["width"] = function() { /* Some fancy work */ }; //It works!
/* But the following DOESN'T work */
Object.prototype = {
length: function() { /* Some fancy work */ },
width: function() { /* Some other fancy work */ }
};
最后一个不起作用,这是使用Object {}添加函数的最短方式,我不知道为什么。我遇到过这些代码(例如来自jQuery 1.7.1),我试图弄清楚它是如何工作的,但我对我不起作用。我认为它必须以某种方式工作,因为jQuery使用它,你能告诉我怎么样?
我见过很多人使用这些代码:
a = {
b: "Something",
c: function() {}
}
其他人使用:
a.prototype = {
b: "Something",
c: function() {}
}
那有什么区别?这与第一个问题有某种关系,所以我真的很想完全理解它。
答案 0 :(得分:1)
1)你不能使用
Object.prototype = {
length: function() { /* Some fancy work */ },
width: function() { /* Some other fancy work */ }
};
因为你试图用两种方法替换Object的整个内置功能。这将破坏整个系统。
2)Object.method()
是其他语言中静态方法的类似物。它由伪类拥有,而不是由每个实例拥有。同时Object.prototype.method
是常规方法或字段的类似物。它只能使用实例访问。
3)在对象创建时触发的自动功能是Object
。您无法修改,因为这是一个内置对象。