美文网首页
2017-12-25

2017-12-25

作者: AoeKeller | 来源:发表于2017-12-25 21:41 被阅读0次

安全模式

  • 看下面代码,输出是什么

      var Book = function (name, price, time) {
        this.name = name;
        this.price = price;
        this.time = time;
       }
       var book = Book('JavaScript设计模式', '¥99.00', '2017-12-25');
    
  • 以上的代码执行后,问,book这个变量是什么?

      你一定以为是一个类的实例吧,但是真正在浏览器打印一下会发现,console.log(book)  // undefined
    

但是你要是直接执行

    console.log(window.name)  //JavaScript设计模式
    console.log(window.price)  //¥99.00
    console.log(window.time)  //2017-12-25
  • 仔细看,发现少了一个new关键字。我们知道new的作用是把对当前对象的this不断的赋值。如果没有new的话,浏览器就会默认执行当前函数,所以在window的对象中有了以上三个变量。为了保证安全,我们需要找一位‘检察长’

      var Book = function (name, price, time) {
          if (this instanceof Book){
              this.name = name;
              this.price = price;
              this.time = time;
          } else {
              return new Book(name, price, time);
          }
      }
      var book = Book('JavaScript设计模式', '¥99.00', '2017-12-25');
    

然在去打印试试看吧。

相关文章

网友评论

      本文标题:2017-12-25

      本文链接:https://www.haomeiwen.com/subject/gwergxtx.html