美文网首页
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