返回

new揭秘:从0开始理解new运算符

前端

前言

在编程世界里,构建自定义对象是一项基本技能,而new运算符正是实现此目的的利器。透过深入探索new运算符,您将领略到新一代的编程思维,并对编程语言有更深入的理解。

一、初识new

初学者往往将new视为函数调用的一部分,认为其行为就如同函数调用一样。然而,new运算符的本质远不止于此。它不只创建了一个新的对象,还对该对象施以一些独特的影响。

  1. 对象创建

    new运算符首先执行一个被称为构造函数的特殊函数,该函数返回一个新创建的对象。对象诞生后,该构造函数将被赋予特殊的任务,负责为对象注入各种属性和方法。

  2. 函数调用

    随后,new运算符将调用该构造函数,传入必要的参数。在函数体内部,这些参数将被用来初始化新创建的对象。换言之,构造函数在创建对象时,可以根据参数进行不同的配置,让每个对象具有独一无二的特点。

  3. 绑定this

    在执行过程中,this关键字绑定到新创建的对象,使得构造函数内部可以使用this关键字来访问该对象。因此,this可以被视为一个内部变量,专用于内部操作。

  4. 返回对象或this

    通常情况下,构造函数会返回一个新创建的对象。然而,如果构造函数没有明确指定返回对象,则返回this。由此可见,this代表着新建的对象,充当着对象的唯一代理人。

二、new运算符的奥秘

  1. null的异类特质

    在编程中,typeof null等同于“object”。乍一看,可能令人费解,但当你深入研究时,就会发现这是一种神奇的现象。其实质在于,null并非真正的对象,而是属于一个特殊的、称为“object”的范畴。

  2. 对象判断的必要性

    new运算符在创建一个对象时,会优先检查typeof值。如果类型是“object”,则认为已经存在一个对象,无需再次创建。也就是说,typeof null == "object"这个条件会阻碍我们创建null对象。为了避免这种情况,我们需要进行对象判断,确保只对undefined进行创建对象的操作。

  3. 默认返回值为undefined

    如果函数没有明确指定返回对象,则默认返回undefined。此时,this将被设置为调用该函数的对象,而this的值恰好也是undefined。所以,new运算符会创建一个undefined的对象,并将其返回。

三、灵活运用new

  1. 函数绑定

    除了创建对象,new还可以实现函数绑定,即让一个函数在指定的对象上执行。例如,如果将一个函数赋予某个对象的属性,就可以通过对象名.函数名()的方式来调用该函数,而此时this将自动指向该对象。

  2. 构造函数的继承

    构造函数之间的继承,可以通过将子构造函数的prototype属性指向父构造函数的实例来实现。这样,子构造函数便拥有了继承自父构造函数的属性和方法,可以简化对象的创建和维护。

结语

new运算符在编程世界中发挥着不可替代的作用,它不仅可以创建对象,还能赋予对象独特的属性和方法。深入了解new的机制,对于每一个开发者来说,都是极有价值的。