5
Peut-être que cette question est facile, mais je ne peux pas comprendre maintenant.L'héritage de javascript
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
Si vous connaissez la raison, dites-moi pourquoi le résultat est "faux".
Pourquoi le second exemple échoué? –
@Graphain dans l'expression 's.self() == s.self()', la valeur contenue dans la variable 's' est contrainte deux fois' ToObject', puisque 's' contient une primitive, quand le point ('.') l'accesseur de propriété est utilisé, est contraint à l'objet pour pouvoir accéder aux membres' String.prototype'. La comparaison serait à peu près équivalente à 'var s = 's'; new String (s) == new Chaîne (s); 'qui donne aussi' false'. – CMS
@Graphain en termes simples, bien que les deux objets chaîne contiennent les mêmes données, ce sont des objets différents, et donc == false. – Stephen