如何为我的所有对象属性制作原型函数

How can I make a prototype function to all my object properties?

本文关键字:属性 原型 函数 对象 我的      更新时间:2023-09-26

我有一个函数对象,我喜欢将另一个函数原型化为所有这些属性。

示例:

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

您的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};

现在您只需要在obj:上放置一次test的修改版本

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,那么这不是一个原型函数。这只是对象上的一个普通的老方法。要添加它,只需将它添加到对象上,如上所述。