手机版

原生JS封装_新功能实现新关键字功能

时间:2021-08-30 来源:互联网 编辑:宝哥软件园 浏览:

一.导言

众所周知:没有对象怎么办?然后新的!

那么在JS中,当我们新建一个对象的时候,这个新的关键字在里面做什么呢?现在我们来分析一下原生JS中新关键字的工作原理。

二、原新

首先,我们来看看新对象:

//用参数名称、年龄函数person(姓名、年龄)创建Person构造函数{this。name=namethis.age=年龄;}//实例化对象小明xm=new Person('小明',18);//打印实例化对象小明console . log(XM);打印结果:

从打印结果可以看出:

当用new关键字实例化一个对象时,首先创建一个空对象xm,这个空对象包含两个属性,名称和年龄,它们对应于构造函数中的两个属性。其次,我们可以知道实例化的对象xm继承自Person.prototype,所以现在我们可以总结一下new关键字在实例化对象时在内部做了什么。事实上,new关键字在内部做了以下三件事(构造函数被称为Func):

1.创建一个空对象,并使其继承Func.prototype;

2.执行构造函数,并将它指向刚刚创建的新对象;

3.返回到新对象;

三.封装_new函数

当我们知道新关键字的内部原理时,我们可以封装一个_new函数,并将其用于与新关键字相同的函数。

_new函数需要传入以下参数:

第一个参数:构造函数名Func;

第二个参数和后续参数:构造函数的参数

Function _new(){//1。获取传入参数中的第一个参数,即构造函数名funcvar func=[]。shift.call(参数);//2.创建一个空对象obj,让它继承func . prototype var obj=object . create(func . prototype);//3.执行构造函数,并将其指向创建的空对象objfunc.apply (obj,arguments)//4。返回创建的对象obj返回obj} 4。测试新函数

封装之后,让我们测试一下封装的new函数,看看它是否实现了与原生new关键字相同的功能。

//用参数名称、年龄函数person(姓名、年龄)创建Person构造函数{this。name=namethis.age=年龄;} function _new(){ //1。获取传入参数中的第一个参数,即构造函数名funcvar func=[]。shift.call(参数);//2.创建一个空对象obj,让它继承func . prototype var obj=object . create(func . prototype);//3.执行构造函数,并将其指向创建的空对象objfunc.apply (obj,arguments)//4。返回创建的对象obj return obj} XM=_ new(人,‘中毒’,18);console . log(XM);测试结果:

根据测试结果,_new函数的函数与new关键字完全一致。

摘要

以上是边肖为实现new关键字功能而推出的原生JS package _new函数,希望对大家有所帮助。如果你有任何问题,请给我留言,边肖会及时回复你的!

版权声明:原生JS封装_新功能实现新关键字功能是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。