use*_*376 5 javascript primitive object
也许这个问题很容易,但我现在无法理解.
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
Run Code Online (Sandbox Code Playgroud)
如果你知道原因,请告诉我为什么结果是"假的".
这是因为当从原始值访问属性时,例如"s",属性加速器在内部强制它ToObject,并且比较失败,因为它检查两个不同的对象引用.
例如:
String.prototype.test = function() {
return typeof this;
}
"s".test(); // "object"
Run Code Online (Sandbox Code Playgroud)
这就像比较:
new String("s") == new String("s"); // false
Run Code Online (Sandbox Code Playgroud)