zoukankan      html  css  js  c++  java
  • 作用域安全的构造函数

    众所周知,构造函数一般用new去调用,比如:

    function Person(name,age){
        this.name = name;
        this.age = age;  
    }
    var xiaoming = new Person('xiaoming',21);

    因为使用new 调用构造函数,所有构造函数内部使用的this会指向新创建的对象的实例,但是,如果没有用new去调用构造函数,情况会怎么样???可能一堆代码里面就有那么几段手误的。

    比如:

    var xiaoming = Person('xiaoming', 21);

    此时情况怎么样,没错,因为this对象是运行时候绑定的,此时的this直接指向了window,那么window就有了window.name 和window.age,这是很可怕的事情,会导致意想不到的错误。

    为了安全起见,创建一个作用域安全的构造函数式很有必要的。

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

    主要是加入了检查并确保this是Person实例的判断,这个,即使不适用new去调用构造函数,也能返构造函数的实例。  

  • 相关阅读:
    vb中5种打开文件夹浏览框的方法总结(转)
    js 日期
    正则表达式
    HTML中meta的作用
    Java操作ElasticSearch
    Elastic安装
    Elasticsearch基本操作
    ubootfs2410移植(转)
    内核驱动系列字符设备驱动流程
    linux 内核移植
  • 原文地址:https://www.cnblogs.com/leaf930814/p/7074097.html
Copyright © 2011-2022 走看看