有没有办法隐藏Object.prototype的属性?

时间:2013-05-22 07:42:18

标签: javascript prototype-chain

如果我将属性添加到Object.prototype中 Object.prototype.sth =“something”;

那么,有没有办法隐藏指定对象的属性? 我试过这样:

function Foo() {
// sth...
}
Foo.prototype = null;
var bar = new Foo();

然而, 酒吧仍然可以访问该物业......


bar.__proto__ = nullFoo.prototype.__proto__ = null有效

2 个答案:

答案 0 :(得分:0)

我认为这样做的方法是:

  function Foo() {
         this.sth = null
// or this.sth = undefined;
    }

    var bar = new Foo();
  • Foo.prototype = null;bar.__proto__将直接指向 Object.prototype
  • 没有Foo.prototype = null;bar.__proto__将指向Foo.prototypeFoo.prototype.__proto__指向Object.prototype

另一种方式:

function Foo() {
// sth...
}
Foo.prototype.sth = undefined;
//or Foo.prototype.sth = null;
var bar = new Foo();

答案 1 :(得分:0)

实际上,如果您使用Foo.prototype覆盖null,则会删除Foo的属性。

Foo.prototype.sth = 1;
bar = new Foo(); # Creates {sth:1}
Foo.prototype = null;
bar = new Foo(); # Creates {}

查看documentation page

  

所有对象都从Object.prototype Object.prototype继承方法和属性,尽管它们可能被覆盖(除了具有null原型的Object,即Object.create(null))。