美文网首页
JS的坑之构造函数

JS的坑之构造函数

作者: Sczlog | 来源:发表于2019-01-25 14:28 被阅读4次

    JS里的普通函数和构造函数在声明时是没有差别的。
    而是通过new操作符来判断是否需要创建一个新的对象。
    如果不使用new操作符来使用,是不会像其他后端代码一样会不能编译的。
    在JS中,new操作符有一个作用就是将this的指向从调用对象转到被构造的对象上。
    就像如下的代码:

    function Person(name,age){
        this.name = name;
        this.age = age;
    }
    var p1 = new Person("Koz",80); //创建一个person对象。
    var p2 = Person("Dave",80) //没有new,this的指向会是window。
    

    在这里不仅是没有成功创建一个你需要的对象,而且由于window本身有一些属性,被更改后很可能造成一些其他功能的错误。
    正确的做法应该在构造函数中添加一个判断,如果this不指向一个person对象,那么则返回一个函数来创建正确的对象。

    function Person(name,age){
        if(this instanceof Person){
            this.name = name;
            this.age = age;
        } else {
            return new Person(name,age);
        }   
    }
    

    相关文章

      网友评论

          本文标题:JS的坑之构造函数

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