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