首页 > 试题广场 >

说一说new会发生什么?

[问答题]
推荐

得分点

创建空对象、为对象添加属性、把新对象当作this的上下文、箭头函数不能作为构造函数

参考答案

标准回答

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

  1. 创建一个空的简单JavaScript对象(即{});
  2. 为步骤1新创建的对象添加属性__proto__,将该属性链接至构造函数的原型对象 ;
  3. 将步骤1新创建的对象作为this的上下文 ;
  4. 如果该函数没有返回对象,则返回this

加分回答

new关键字后面的构造函数不能是箭头函数。

延伸阅读

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

function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}

const car1 = new Car('Eagle', 'Talon TSi', 1993);

console.log(car1.make);
// expected output: "Eagle"
编辑于 2021-09-15 12:03:31 回复(0)
1.创建一个新的空对象;
2.为空对象添加prototype属性,并将对象的prototype属性指向原型对象;
3.将新创建的对象作为this的上下文;
4.如果有返回值,则返回此对象;反之,则返回this。
发表于 2024-01-08 16:23:18 回复(0)
1.创建一个新的空对象;
2.设置原型链。把构造函数的ptototype属性,作为空对象的原型;
3.改变this指向。this赋值给这个空对象,执行构造函数,完成赋值。
4.如果函数没有返回值,就返回这个this对象。
var obj = new Object()   //1.创建空对象
obj.__proto__ = Func.prototype // 2.设置原型链  把构造函数的prototype属性,做为空对象的原型
var result = Fun.call(obj)  //3.改变this指向,this赋值给这个空对象,执行构造函数,完成赋值
if(typeof(result) == 'object') {  //4 是对象就返回 不是对象就返回这个空对象
    return result
}else {
    return = obj
}


发表于 2022-04-17 20:52:13 回复(0)
(1)首先创建了一个新的空对象 (2)设置原型,将对象的原型设置为函数的 prototype 对象。 (3)让函数的 this 指向这个对象,执行构造函数的代码(为这个新对象添加属性) (4)如果函数没有返回其他对象,那么 new 表达式中的函数调用会自动返回这个新对象
发表于 2023-05-11 17:42:07 回复(0)
总共有四件事:1. 创建一个新的实例对象
2.该函数中的this指向新的实例对象
3.执行该函数体
4.自动返回这个函数
发表于 2022-03-03 16:51:13 回复(0)