直接调用构造函数与使用 new 的区别

本文探讨了JavaScript中直接调用构造函数与使用new关键字的区别。直接调用时,this指向全局对象,导致变量泄露;而使用new则会创建新对象,this指向该对象,并返回该对象。理解this指向及new的机制对JavaScript编程至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接调用构造函数与使用 new 的区别

  var Fn = function (){
            this.a = 1;
            this.b = function (){
                //...
            }
            var c = 2;
        }
  • 直接调用构造函数

    直接调用构造函数,就和普通函数一样按顺序执行即可.

    但是需要注意的是如果直接在全局中直接调用,函数中的 变量 a,b就跑到全局中了(可以在全局中访问到)

    在这里插入图片描述

    这是为什么呢?

    首先要明白this的作用,在这里因为 Fn() 在全局中调用,函数中的this(this引用的是函数执行的环境对象,只有代码在执行是才能确定this的指向)指针 指向了 全局对象 window,因此相当于在全局中执行了赋值语句 window.a = 1``window.b = fn(){ }

  • 使用 new
    任何函数,都可以可以通过new操作符来调用,那它就可以作为构造函数(构造函数其实就是用来返回对象的)。
    而我们规定构造函数的函数名应该以一个大写字母开头,主要是为了区别ECMAscript中其他函数。

    若要用构造函数创建对象,需要使用new操作符。这种方式调用构造函数会经历以下4个步骤:
    1. 创建一个新对象。
    2. 将构造函数的作用域的赋给新对象(因此this就指向了这个新对象)。
    3. 执行构造函数中的代码。(为这个新对象添加属性)。
    4. 返回新对象。

    在这里插入图片描述


欢迎指正错误,新手,多多包涵!(之后会尽可能完善文章)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值