2

我想知道将属性动态添加到函数原型对象的最佳方法(或者如果它甚至是一个好主意)。

这就是我想出的:

['foo', 'bar'].forEach(function(method) {
    String.prototype[method] = resolve;
});

function resolve() {
    // Who the hell called me?
}

'str'.foo();

我正在resolve()为我添加的所有新属性调用相同的函数,并且我需要检查谁调用了该函数(哪个属性名称),以便根据该信息确定一个实现。这完全是出于好奇,我正在对疯狂的 JavaScript API 实现进行一些测试。

各位对此有什么建议吗?

4

1 回答 1

14
['foo', 'bar'].forEach(function (method) {
    String.prototype[method] = function () {
        resolve(method);
    };
});

function resolve(method) {
    alert(method);
}

("hello world").foo();
("hello world").bar();
于 2013-05-31T17:59:00.697 回答