gpt4 book ai didi

javascript - 为什么原始变量的行为像对象?

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

<分区>

如果我们像这样向 Number 函数(或 Boolean 或 String)添加一个方法

Number.prototype.sayMyNumber = function(){
return "My number is " + this;
}

然后创建一个数字对象并将其分配给一个变量

var num1 = new Number(34); 
num1.sayMyNumber(); // it says "My number is 34"

这很好并且在我们创建“数字”对象时符合预期。

类似地,如果我创建一个原始变量

num2 = 34;
num2.sayMyNumber(); // it says "My number is 34"

令人惊讶的是,num2 也有一个方法 sayMyNumber(),即使我们没有显式地创建一个 Number 对象。

然后我就这样试了,

34.sayMyNumber(); // error, this does not work 

为什么 num2 有效?

更新

这是我在评论部分提出的后续问题,我把它放在这里是为了更好的可见性

下面的答案提到 num2 在内部被视为“数字”对象。这让我更加困惑。

typeof num1 === "number" // returns false
typeof num2 === "number" // returns true

typeof num1 === "object" // returns true
typeof num2 === "object" // returns false

这是否意味着 num2 不是“对象”?如果它不是“对象”,那么它怎么可能是“数字”的实例?

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