ES5 js中的new操作符

本文深入解析JavaScript中使用new关键字实例化对象的过程,详细解释了如何创建空对象、设置原型链、执行构造函数以及确定返回值。通过具体示例帮助理解JavaScript的构造函数与实例化机制。

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

js中的任何function都可以new,看上去每个方法都像java或者c++中的构造函数。不过,java和c++对构造函数进行new操作得到的是,和构造函数同名的类的实例(但是,构造函数并显式的返回值和void。)
那么js的中对任意一个function进行new操作是做的什么事情?

var Func=function(){};
var func=new Func ();//对这一步进行步骤分析

new共经了四个阶段:

var obj=new Object(); //1 隐式地创建一个空对象
obj.__proto__= Func.prototype;  //2 设置原型链,因此,只有new出来的实例对象才有prototype属性,类本身不包含prototype属性
var result =Func.call(obj);  //3 让Func中的this指向obj(这一小步没写出来),并执行Func的函数体。
if (typeof(result) == "Object"){  //4 判断Func的返回值类型,如果是值类型,返回obj。如果是引用类型,就返回这个引用类型的对象。
  func=result;
}else{
  func=obj;
}

还是要深刻的读一读https://www.cnblogs.com/pizitai/p/6427433.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值