基本上我可以做以下事情......
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
答案 0 :(得分:3)
答案 1 :(得分:0)
您可以从iframe借用错误的Number
,Boolean
....并扩展其原型。
基本上以下内容不起作用,因为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
}