5
Tal vez esta pregunta es fácil, pero no puedo entender ahora.La herencia de javascript
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
Si conoce la razón, dígame por qué el resultado es "falso".
¿Por qué fracasa el segundo ejemplo? –
@Graphain en la expresión 's.self() == s.self()', el valor contenido en la variable 's' se coacciona dos veces' ToObject', ya que 's' contiene una primitiva, cuando el punto ('.') se usa el acceso a la propiedad, se lo coacciona para objetar por poder acceder a los miembros' String.prototype'. La comparación sería más o menos equivalente a 'var s = 's'; nuevos String (s) == new String (s); 'que también produce' false'. – CMS
@Graphain en términos sencillos, aunque ambos objetos de cadena contienen los mismos datos, son objetos diferentes, y por lo tanto == falso. – Stephen