Javascript:如何隐藏对象的属性?

标签 javascript object instance loops for-in-loop

我想隐藏对象的某些属性,并在迭代时显示一些属性。所以我尝试使用原型(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/

相关文章:

javascript - 从 d3.js 中的 GeoJson 多边形获取每个多边形的质心

javascript - 对嵌套的 json 复杂数组进行排序

C#:static object.Equals 如何检查是否相等?

ruby - 动态添加 ruby​​ 类方法或实例方法

javascript - 如何通过表单提交插入后显示成功消息

javascript - 将数组和其他变量一起转换成 JSON

javascript - 在 jquery liberary jquery-1.4.2.min.js 上,我想在图像悬停时显示隐藏,但它不起作用

javascript - 根据对象的值过滤对象数组

c++ - 如何在两个实例中使用值进行计算?

ios - 在一个 ViewController 中创建类的实例并使用它在另一个中显示数据