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 正常输出
  • 相关阅读:
    datatables出现横向滚动条
    mumu模拟器设置代理/打开网络连接(windows)
    a标签下划线
    python 配置导入方式
    redis命令
    django+mongodb 内置用户控制
    异常补充
    关于异常的总结
    java 常用类的方法
    java 日期时间类加Calendar的set和add方法
  • 原文地址:https://www.cnblogs.com/zhangxiaos/p/6418705.html
Copyright © 2011-2022 走看看