我想隐藏对象的某些属性,并在迭代时显示一些属性。所以我尝试使用原型(prototype),但这不起作用:
function Car(){}
Car.prototype.version = '1.0';
var car_instance = new Car();
car_instance.make = 'BMW';
car_instance.model = 'x5';
for(property in car_instance){
document.body.innerHTML += property + '<br>';
}
但这也会输出 version
:
make
model
version
我真的很喜欢隐藏一些函数/方法的想法,但可以像 car_instance.version
一样轻松访问它,事实上,如果我 console.log 该对象,它在 proto 下也有其他属性 不包含在 for in 循环中。
那我应该怎么解决呢?
最佳答案
如果你想从 for in
循环中“隐藏”属性, 是实例的直接属性,你可以使用 Object.defineProperty
:
Object.defineProperty(car_instance, "version", {
value: "1.0",
writable: true,
configurable: true,
enumerable: false // don't make it appear in a for in loop
});
关于Javascript:如何隐藏对象的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10970859/