我有一组我从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
}
所以,不确定如何添加此方法。
答案 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