Car*_*Gil 7 javascript types object
var test = new Boolean(0)
test.prop = "OK!"
Run Code Online (Sandbox Code Playgroud)
你可以改变的价值test来true?
但test.prop应该还是"好的!"
换句话说,test应该是同一个对象
内置对象包装(与所创建的Boolean,Number,String和Dateconstuctors)存储在内部属性原始包裹值命名的[[PrimitiveValue]],它不能被改变,但是...
您可以覆盖对象的valueOf方法test:
var test = new Boolean(0);
test.prop = "OK!"
// override valueOf:
test.valueOf = function () { return true; };
if (test == true) { // using the equals operator explicitly for type conversion
alert(test.prop); //"OK!"
}
Run Code Online (Sandbox Code Playgroud)
它将起作用,因为该valueOf方法由equals运算符触发的类型转换机制在内部使用.
当其中一个操作数是布尔值时,两者都在末尾转换为数字.
如果我们不使用equals运算符(例如if (test) { ... }),因为test是一个对象,当直接转换为Boolean时,它将始终产生true.
转换成布尔会产生任何对象true的值,即能够产生一个唯一的值false结果,是"falsey"值(null,undefined,0,NaN,一个空字符串,和当然的false值)时,任何东西都不会产生true.
更多信息:
| 归档时间: |
|
| 查看次数: |
1106 次 |
| 最近记录: |