【问题标题】:how can I hide the default methods of Object when creating a new instance创建新实例时如何隐藏 Object 的默认方法
【发布时间】:2011-12-16 03:26:19
【问题描述】:

我想在创建实例时隐藏所有默认方法,如 toString、hasOwnProperty、valueOf 等。这怎么可能?

function Foo() {};
var x = new Foo();
x.toString(); //should fail

另外;我可以理解,如果我这样做,我将无法执行以下操作:

console.log(x);

但是这些函数还有什么用呢?

【问题讨论】:

  • 即使假设你能够做到这一点,你为什么要这样做?

标签: javascript object methods tostring prototype-programming


【解决方案1】:

如果你真的想要,你可以重写toString 方法:

    Foo.prototype.toString = undefined;

【讨论】:

  • 我可以为所有这些方法做到这一点,还是环境取决于它们中的任何一个?
  • 这取决于您打算将这些对象与什么一起使用。您打算将它们与任何第三方实用程序一起使用吗?
  • @coen - 那我猜你会没事的
  • 这不会覆盖 toString 方法,它只是将 toString 属性放置在“阴影”Object 的属性解析链上.prototype.toString。顺便说一句,标识符“undefined”被视为未声明的变量,因此赋值为 undefined。如果有人要为 undefined 赋值,那么该值将被赋值。为了清楚起见,您可以这样做:Foo.prototype.toString; 并且不分配任何值。
  • @Rob - 所以只是说 Foo.prorotype.toString;会同样隐藏 toString() 方法吗?我试过了——它似乎根本不影响 toString()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2013-05-30
相关资源
最近更新 更多