安全类的深入理解

如果不使用new来调用,那么将会按照普通函数的调用方法,那么this指向的将会成为window。。。。所以需要进行进一步的判断

function People(name, age, sex) {
        // 判断this指向了谁, 从而决定后续代码
        if (this === window) {
            // 说明是当做了普通函数来调用,普通函数想要返回一些东西,需要return 
            return new People(name, age, sex);
        } else {
            // 说明 使用new 来调用, 一切正常
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    }

    // // 测试
    // var p = new People("小明", 12, "男");

    // var p1 = People("小红", 11, "女");
    // console.log(p);
    // console.log(p1);
    // 
    // 
原文地址:https://www.cnblogs.com/objectjj/p/9544553.html