更改Javascript对象的Truthy / Falsey值

时间:2011-07-11 20:10:33

标签: javascript

基本上我可以做以下事情......

var obj = {}:
obj.falsey = true;
if(obj){
   //code not executed
}else{
   //code executed
}

我可以利用事实!+~ ...... 请致电valueOf/toString并执行以下操作,但我希望避免这种情况。

var obj = {valueOf:function(){return 0}}:
obj.falsey = true;
if(!!obj){
   //code not executed
}else{
   //code executed
}

为什么我要这样做?因为我很好奇:D

3 个答案:

答案 0 :(得分:3)

不,你不能。你必须实现一些自定义逻辑。

答案 1 :(得分:0)

您可以从iframe借用错误的NumberBoolean ....并扩展其原型。

基本上以下内容不起作用,因为Numbers是原始值。

var x = 0;
x.test = 'yo';
console.log(x.test);

这样做,但显然这污染了Number.prototype,所以你应该从另一个iframe中借用一个不同的Number对象。

var x = 0;
Number.prototype.test = 'yo';
console.log(x.test);

最终,这不是一个好主意。

答案 2 :(得分:-1)

你可以使用loose equ来将它与布尔值进行比较。人们总是这样做,最后它有一定的用途。

var obj = {valueOf: function() {return !this.falsey;}};
obj.falsey = true;
if (obj == true) {
   //code not executed
} else if (obj == false) {
   //code executed
}