zoukankan      html  css  js  c++  java
  • 创建对象的安全模式

    对于有些JavaScript的初学者来说,可能不太适应面向对象的写法,经常容易忘记使用new关键字而导致出错。

    其实,我们可以找为检察官为我们实时监测。

    首先,我们来看下问题所在吧!

    function Person(name, age) {
        this.name = name;
        this.age  = age;
    }
    var person = Person('aa', 20);
    console.log(person.name); // TypeError 

    原因不难看出吧,Person是在作为一个函数在全局环境执行了,那么this必然指向全局的对象,这里为window,

    即window.name为aa,window.age为20,但person对象是没有的!

    如何避免这种错误呢?我们可以使用创建对象的安全模式,首先监测是否为当前类的示例,

    是的话说明使用了new关键字,正常执行就是了,否则返回一个示例对象,再次为this进行赋值操作,如下:

    function Person(name, age) {
        if (this instanceof Person) {
            this.name = name;
            this.age  = age;
        }
        else {
            return new Person(name, age);
        }
    }
    var person = Person('aa', 20);
    console.log(person.name); // aa 正常输出
  • 相关阅读:
    用户登录
    open >>>文件操作
    随机数
    内置函数
    函数练习
    函数的动态参数
    函数的指定参数
    函数的普通参数
    函数的初步认识
    copy
  • 原文地址:https://www.cnblogs.com/zhangxiaos/p/6418705.html
Copyright © 2011-2022 走看看