• 作用域安全的构造函数


    众所周知,构造函数一般用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去调用构造函数,也能返构造函数的实例。  

  • 相关阅读:
    HBase分布式集群搭建过程
    HBase基础知识
    HBase伪分布搭建
    搭建ZooKeeper集群环境
    hadoop集群环境搭建-hadoop之伪分布搭建环境
    乱序数组找出前面的都比他小后面的都比他大的数
    sikuli简介
    ZooKeeper 应用场景
    svmrank原理
    Latex汇总
  • 原文地址:https://www.cnblogs.com/leaf930814/p/7074097.html
Copyright © 2020-2023  润新知