鉴于在JavaScript中
console.log("var F=new Boolean(false)")
console.log("( F != (F==false))",(( F != (F==false)) ? "TRUE" : "false"));
console.log("(!F != (F==false))",((!F != (F==false)) ? "TRUE" : "false"));
Run Code Online (Sandbox Code Playgroud)
打印:
( F != (F==false)) TRUE
(!F != (F==false)) TRUE
Run Code Online (Sandbox Code Playgroud)
这意味着在典型条件下布尔对象不是dop-in替代布尔基元,例如:
if(someBoolean) ... // always true
if(!someBoolean) ... // always false
Run Code Online (Sandbox Code Playgroud)
JavaScript Set和Map集合允许任何类型,包括基元.
特别是布尔对象有什么用处; 和一般表示其他原始类型的对象,因为它们在与它们相关的一致性方面有各种奇怪的东西?
注意:我具体询问用例(如果有的话)是什么,而不是它们与原始对应物的区别.
Ori*_*iol 19
布尔对象只是对象,因此是真实的.
console.log(!!new Boolean(true)); // true
console.log(!!new Boolean(false)); // trueRun Code Online (Sandbox Code Playgroud)
存在布尔对象,因为这样你就可以Boolean.prototype在原始布尔值上添加方法并将它们使用(它们将被包装在引擎盖下的booolean对象中).
Boolean.prototype.foo = function() {
console.log("I'm the boolean " + this + "!!");
};
true.foo();
false.foo();Run Code Online (Sandbox Code Playgroud)
当您想要在布尔值中存储属性时,它们也很有用.
var wrappedBool = new Boolean(false);
wrappedBool.foo = "bar";
console.log("Property foo: ", wrappedBool.foo); // "bar"
console.log("Unwrapped bool: ", wrappedBool.valueOf()); // falseRun Code Online (Sandbox Code Playgroud)
但那是不推荐的.
| 归档时间: |
|
| 查看次数: |
724 次 |
| 最近记录: |