[英]Need to understand the behavoir of prototype in javascript
此代码从原型中得到ISBN号的默认值(即55555)。正如预期的那样。
function Book()
{
alert('construct called !!!');
}
Book.prototype={
ISBN:55555
};
var book=new Book();
alert(book.ISBN);
但是下面的代码会生成带有'undefined'测试的警报消息
function Book()
{
alert('construct called !!!');
}
function Book(isbn)
{
this.ISBN=isbn;
}
Book.prototype={
ISBN:55555
};
var book=new Book();
alert(book.ISBN);
这也应该导致默认值(即55555)需要理解为什么会出现这种行为。
当您的构造函数Book
执行时,它找到的第一个参数是未定义的,并将它分配给this.ISBN
。
因此,也许令人困惑的是,book.ISBN包含未定义的原始值 ,而不是根本没有定义。
调用book.ISBN时,因为在book实例本身中找到了这个原语,所以解释器永远不会遍历原型链。
如果要编写代码以回退到原型中的值,则必须显式检查undefined:
function Book(isbn)
{
if (isbn !== undefined) this.ISBN=isbn;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.