gpt4 book ai didi

字符串上的 JavaScript 身份运算符

转载 作者:可可西里 更新时间:2023-11-01 02:33:59 24 4
gpt4 key购买 nike

我正在尝试编写一个原型(prototype)来确定字符串是否为空。真的就是玩JS和prototype而已,没什么大不了的。这是我的代码:

String.prototype.IsEmpty = function() {
return (this === "");
}

请注意,我使用了 === 身份比较而不是 == 相等性。当我运行具有上述定义的函数时:

"".IsEmpty(); // false

如果我更改定义以将 == 用作:

String.prototype.IsEmpty = function() {
return (this == "");
}

新的 def'n 会做:

"".IsEmpty(); // true

我不明白为什么 === 不起作用,因为 """" 相同

最佳答案

这是因为 "" 是一个字符串基元,但是当您调用 .IsEmpty() 时,它会隐式转换为 String 对象。

您需要对其调用 .toString():

String.prototype.IsEmpty = function() {
return (this.toString() === "");
}

有趣的是,这是特定于浏览器的 - typeof this 在 Chrome 中是 string

正如@pst 指出的那样,如果您要转换另一种方式并比较 this === new String(""); 它仍然行不通,因为它们是不同的实例.

关于字符串上的 JavaScript 身份运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1603686/

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