如何使用Object.prototype将函数添加到对象构造函数

How can I added functions to Object constructor using Object.prototype?

本文关键字:添加 对象 构造函数 函数 何使用 Object prototype      更新时间:2023-09-26

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

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

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

1)你不能用

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

,因为你试图用两个方法替换对象的整个内置功能。这会破坏整个系统。

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

3)对象创建时触发的自动功能为Object