1

这些天我一直在使用这些脚本,经过大量研究,我仍然找不到答案。

所以这是问题所在,我想(例如)将一个函数添加到一个对象中(例如,.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() {}
}

那么区别是什么呢?这在某种程度上与第一个问题有关,所以我真的很想完全理解它。

4

1 回答 1

1

1)你不能使用

Object.prototype = {
    length: function() { /* Some fancy work */ },
    width: function() { /* Some other fancy work */ }
};

因为您试图仅用两种方法替换 Object 的整个内置功能。这将破坏整个系统。

2)Object.method()是其他语言中静态方法的类似物。它属于伪类,而不是它的每个实例。同时Object.prototype.method是常规方法或领域的类似物。只能使用实例访问。

3) 将在对象创建时触发的自动功能是Object. 您无法修改,因为这是一个内置对象。

于 2011-12-12T08:04:57.563 回答