gpt4 book ai didi

javascript - 更改包装的原始数据类型的值

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:24 25 4
gpt4 key购买 nike

var test = new Boolean(0)
test.prop = "OK!"

你能把test的值改成true吗?

但是 test.prop 应该仍然是“OK!”

换句话说,test应该是同一个对象

最佳答案

内置对象包装器(使用 BooleanNumberStringDate 构造函数创建)存储名为 [[PrimitiveValue]] 的内部属性中的原始包装值,无法更改,但是...

您可以覆盖test 对象的valueOf 方法:

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!"
}

它将起作用,因为 valueOf 方法由等于运算符触发的类型转换机制在内部使用。

当其中一个操作数是 bool 值时,两者都在最后转换为数字。

如果我们不使用等于运算符(例如 if (test) { ... }),因为 test 是一个对象,当直接转换为 bool 值时,它将始终产生 true

任何转换为​​ bool 值的对象都会产生 true 值,唯一可以产生 false 结果的值是“假”值(nullundefined0NaN、空字符串,当然还有 false 值),任何其他都会产生 true

更多信息:

关于javascript - 更改包装的原始数据类型的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4066094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com