5
也许这个问题很简单,但我现在无法理解。javascript的继承
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
如果您知道原因,请告诉我为什么结果是“false”。
为什么第二个例子失败? – 2010-07-14 03:57:46
@Graphain表达式's.self()== s.self()'中,'s'变量中包含的值被强制两次'ToObject',因为's'包含一个原语,当点'.')属性访问器被使用,被强制为能够访问'String.prototype'成员的对象。比较将大致等同于'var s ='s';新的String(s)==新的String(s);'也产生'false'。 – CMS 2010-07-14 03:59:54
@Graphain通俗地说,虽然两个字符串对象都包含相同的数据,但它们是不同的对象,因此==假。 – Stephen 2010-07-14 04:03:59