也许这个问题很简单,但我现在无法理解。
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
如果您知道原因,请告诉我为什么结果为“假”。
也许这个问题很简单,但我现在无法理解。
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
如果您知道原因,请告诉我为什么结果为“假”。
这是因为当从原始值(例如 )访问属性时,属性访问"s"
器会在内部强制它ToObject
,并且比较失败,因为它检查了两个不同的对象引用。
例如:
String.prototype.test = function() {
return typeof this;
}
"s".test(); // "object"
这就像比较:
new String("s") == new String("s"); // false