new 运算符

本文详细介绍了JavaScript中的new运算符,包括它的四个操作步骤:创建空对象、设置_prototype_、绑定this上下文及返回对象的规则。同时,强调了未使用new调用构造函数的后果和this指向的变化。

目录

介绍

new 关键字的操作

返回对象说明

其他说明


介绍

new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。

new 关键字的操作

new 关键字会进行如下操作:

1. 创建一个空的简单 JavaScript 对象(即 {} );

2. 为步骤 1 新创建的对象添加属性 _ _proto_ _ ,将该属性链接至构造函数的原型对象;

3.将步骤 1 新创建的对象作为 this 的上下文;

4. 如果该函数没有返回对象,则返回 this。

返回对象说明

如果返回了对象,

返回的对象的类型是 Object 时,返回 undefined;

返回的对象的类型是 function 时,返回 函数名;

返回的对象的类型是 Array 时,返回 undefined;

返回的对象的类型是 基本类型 时,返回 this;

其他说明

如果使用构造函数创建对象没有使用 new 运算符时,构造函数会像其他的常规函数一样被调用,并不会创建一个对象。在这种情况下,this 指向也是不一样的。

例:

    function Person(name, age) {
        this.name = name;
        this.age = age;
        this.sayname = function () {
            console.log(this.name);
            console.log(this);
        };
    }
    var p1 = new Person('jack', 13); // 使用 new 运算符
    console.log(p1); // Person{}
    console.log(p1.name, p1.age); // jack 13
    p1.sayname(); // jack  Person{}

    
    var p2 = Person('tom', 10); // 不使用 new 运算符
    window.sayname(); // tom  window
    console.log(this.name, this.age); // tom 10
    console.log(window.name, window.age); // tom 10
    console.log(p2); // undefined
    // console.log(p2.name, p2.age); // 报错
    // p2.sayname(); // 报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值