JavaScript基础面试题7--JavaScript中的 new操作符

本文详细解释了JavaScript中的new关键字作用,包括创建对象、原型链连接、this绑定以及new的执行流程。特别强调了构造函数返回值对实例化的影响。
摘要由CSDN通过智能技术生成

JavaScript基础面试题7--JavaScript中的 new操作符

1.new 是什么

Javasriptnew 是创建对象时要使用的运算符。
new 关键字通过构造函数 Student 创建出来的实例可以访问到构造函数中的属性。
new 通过构造函数 Student 创建出来的实例可以访问到构造函数原型链上的方法(即实例与构造函数通过原型链连接了起来)。

        function Student(name, age) {
            this.name = name;
            this.age = age;
        }

        Student.prototype.sayName = function () {
            console.log(this.name);
        }

        const s1 = new Student('小明', 18);
        console.log(s1); //{name: '小明', age: 18}
        s1.sayName(); // 小明

假如在构建函数中显示加上返回值,并且返回值是一个原始类型,这个返回类型没有用。例:

        function Student(name, age) {
            this.name = name;
            this.age = age;
            // 添加返回原始类型
            return 1;
        }

        Student.prototype.sayName = function () {
            console.log(this.name);
        }

        const s1 = new Student('小明', 18);
        console.log(s1); //{name: '小明', age: 18}
        s1.sayName(); // 小明

2.new 的执行流程

  1. 创建一个新的 obj
  2. 将对象与构建函数通过原型链链接起来;
  3. 将构建函数中的 this 绑定到新建的对象 obj 上;
  4. 根据构建函数返回类型判断,如果是原始值则被忽略,如果返回值是对象,需要正常处理。
    function myNew(Func, ...args) {
        // 创建一个新的空对象,并将其赋值给变量 obj
        const obj = {}

        // 将新创建的对象 obj 的原型链指向传入的构造函数 Func 的原型,实现继承
        obj.__proto__ = Func.prototype

        // 使用 apply 方法调用构造函数 Func,将 this 绑定到新创建的 obj 上,并传递所有参数 args
        const result = Func.apply(obj, args)

        // 检查构造函数执行的结果 result 是否是一个对象实例
        // 如果是,则返回结果对象;如果不是,则返回新创建的空对象 obj
        return result instanceof Object ? result : obj;
    }
  • 14
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值