如果我向 Object.prototype 添加一个属性,例如 Object.prototype.sth = "something";
那么,有没有办法隐藏指定对象的属性?我试过这样:
function Foo() {
// sth...
}
Foo.prototype = null;
var bar = new Foo();
但是,酒吧仍然可以使用财产……
bar.__proto__ = null或Foo.prototype.__proto__ = null工作
如果我向 Object.prototype 添加一个属性,例如 Object.prototype.sth = "something";
那么,有没有办法隐藏指定对象的属性?我试过这样:
function Foo() {
// sth...
}
Foo.prototype = null;
var bar = new Foo();
但是,酒吧仍然可以使用财产……
bar.__proto__ = null或Foo.prototype.__proto__ = null工作
我认为这样做的方法是:
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.prototype, 并Foo.prototype.__proto__指向Object.prototype另一种方式:
function Foo() {
// sth...
}
Foo.prototype.sth = undefined;
//or Foo.prototype.sth = null;
var bar = new Foo();
实际上,如果你用 覆盖Foo.prototype,nullFoo 的属性将被删除。
Foo.prototype.sth = 1;
bar = new Foo(); # Creates {sth:1}
Foo.prototype = null;
bar = new Foo(); # Creates {}
看看文档页面:
所有对象都从 Object.prototype Object.prototype 继承方法和属性,尽管它们可能被覆盖(除了具有空原型的对象,即 Object.create(null))。