繁体   English   中英

需要了解javascript中原型的行为

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM