我正在进行随机代码挑战,我无法弄清楚我的生活将如何实现这一目标
function(obj) {
if ( (obj < 10) && (obj > 10) ) {
return true;
}
}
我尝试过的事情是设置一个间隔来将变量更改为0ms(最终成为浏览器默认值),使obj成为一个生命函数,每次使用时都会递增一个全局变量,并且一大堆其他看似不太有用的方法。这里有任何想法,或指出一些我不知道的明显缺失的东西吗?
答案 0 :(得分:14)
线索在变量名称“obj”中。比较对象时,会调用它们的valueOf()
方法。如果我们提供valueOf
方法,每次都返回不同的值:
function test(obj) {
if ( (obj < 10) && (obj > 10) ) {
return true;
}
}
var Obj = function() {
var flag = false;
this.valueOf = function() {
if( flag ) {
return 11;
}
flag = true;
return 9;
}
}
console.log( test( new Obj() ) );
上述对象的toValue
在第一次调用时返回9(9 <10),从那时起返回11(11> 10)。