我有一个函数对象,我喜欢将另一个函数原型化为所有这些属性。
示例:
var test = function(num) {
return num * num / (num/4);
}
var obj = {
item1: item1, //this is a function already setted.
item2: item2, //this is a function already setted.
item3: item3 //this is a function already setted
}
我想要的是:obj.item1().test()
而不在每个函数中设置this.test
。
答案 0 :(得分:2)
您的test
功能
return num * num / (num/4);
就我所见,完全等同于num * 4
。
无论如何,评论中给出的示例itemX
会返回一个数字。能够在数字上调用函数test
的唯一方法是将其添加到Number
原型中,有些人会说这是一个坏主意:
Object.defineProperty(Number.prototype, 'test', { value: function () {
return this * this / (this/4);
});
如果您希望能够将test
从调用结果链接到obj.itemX
,那么后者需要返回this
,而不是this.num
:
var itemX = function(val) {this.num = val; return this};
现在您只需要在test
上放置obj
修改后的版本一次:
var obj = {
item1: item1, //this is a function already set.
item2: item2, //this is a function already set.
item3: item3, //this is a function already set.
test: function() { return test(this.num); }
};
> obj.item1(22).test()
< 88
如何为所有对象属性创建原型函数?
如果您指的是test
,那么这不是原型函数。它只是一个对象的简单旧方法。要添加它,只需将其添加到对象上,如上所述。