如何向已经创建的对象添加方法

时间:2015-04-11 08:20:27

标签: javascript methods

我有一组我从JSON数据构建的对象。我获得的JSON数据提供了大部分必要的对象属性,但我想为这些对象添加一些额外的方法和属性。添加属性对我来说非常简单。我只是这样做:

searchResults[index].isVisible = true;

将isVisible属性添加到每个对象。但是我也想为每个对象添加一个方法,可能是这样的:

function toggleVisibility() {
    if (this.isVisible) {
        this.isVisible = false;
    } 
    else {
        this.isVisible = true;
    }  
}

稍后在我的代码中,我可以执行以下操作:

if (searchResults[x].isVisible) {
    // do things
}

所以,不确定如何添加此方法。

1 个答案:

答案 0 :(得分:0)

您可以添加此功能

searchResults[index].toggleVisibility = function toggleVisibility() {
  return this.isVisible = !this.isVisible;
};

看到它的工作

var x = searchResults[index];
x.isVisible = true;

x.toggleVisibility();
console.log(x.isVisible); //=> false

x.toggleVisibility();
console.log(x.isVisible); //=> true

但这确实有影响。通常当你有很多相同类型的对象时,像这样的方法在对象的原型上定义一次。相反,你在每个对象上定义一个函数,如果你有很多对象,它可能会占用大量内存。

这是另一种只定义一个函数的方法

function toggleVisibility(obj) {
  return obj.isVisible = !obj.isVisible;
}

var x = searchResults[index];
x.isVisible = true;

toggleVisibility(x);
console.log(x.isVisible); //=> false

toggleVisibility(x);
console.log(x.isVisible); //=> true