5
Có thể câu hỏi này rất dễ, nhưng bây giờ tôi không thể hiểu được.Thừa kế của javascript
String.prototype.self=function()
{
return this;
}
var s="s";
alert("s".self()=="s".self()) //false;
alert(s.self()==s.self()) //false;
Nếu bạn biết lý do, vui lòng cho tôi biết tại sao kết quả là "sai".
Tại sao ví dụ thứ hai thất bại? –
@Graphain trong biểu thức 's.self() == s.self()', giá trị chứa trong biến 's' bị ép buộc hai lần' ToObject', vì 's' giữ nguyên thủy, khi dấu chấm ('.') accessor thuộc tính được sử dụng, được ép buộc đối tượng để có thể truy cập các thành viên' String.prototype'. So sánh sẽ tương đương với 'var s = 's'; new String (s) == new String (s); 'cũng tạo ra' false'. – CMS
@Graphain trong các thuật ngữ layman, mặc dù cả hai đối tượng chuỗi chứa cùng một dữ liệu, chúng là các đối tượng khác nhau, và do đó == false. – Stephen