我希望能够创建具有自身内在价值的对象。这样我可以在表达式中使用它,就好像它是一个常规变量。事实证明,这很容易 - 我很想知道我是否缺少一些东西。所有它似乎需要确保对象包含一个方法“valueOf”。像这样:具有自身内在价值的物体。另一种做吸尘器的方法
var p = {
a: 12;
valueOf: function(){return this.a+12}
}
alert(p/3); // =8
这也许是一个好主意,也包括一个“toString”方法。似乎发生的事情是,如果没有valueOf方法,对该对象的引用会沿着原型链向上,直到它找到Object上的方法,它只返回“object Object”。通过提供一个本地的方法,该方法可以返回任何东西。
它似乎适用于我尝试过的所有浏览器。
这是另一种提供类似getter功能的方法。但更好一点,因为getter只能应用于对象的属性。这样你可以使用对象本身。
您认为如何?这安全吗?任何陷阱?
*“这是另一种提供类似getter功能的方法” - 如何? Getters为成员提供访问权限,在这里你重写对象本身的价值。 – Madbreaks 2014-10-29 17:13:41
是的。但它就像一个吸气器,你可以用一个类似变量的引用来引用这个值。此外,该对象仍然具有全部属性。这只是一个额外的事情,你可以做的对象。 – 2014-10-29 23:59:50