前言:
如今你们对“newobjectjs”大致比较重视,大家都想要了解一些“newobjectjs”的相关文章。那么小编也在网上网罗了一些对于“newobjectjs””的相关知识,希望咱们能喜欢,咱们快快来学习一下吧!在javascript中我们可以通过new对应的类来获得实例对象,下面是new的实现
//new的原理//1.创建一个空对象//2.设置原型,将对象的原型设置为函数的prototype属性[显示原型]//3.让函数的this指向这个对象,指向构造函数的代码(为新对象添加属性)//4.判断函数的返回值类型,如果是值类型,返回创建的对象,如果是引用类型,就返回这个引用类型的对象function Person(age){ this.name = "Alex-jsonk", this.age = age}const _new = function (constructor, ...args) { /** * 1.const obj = {} * 2.obj.__proto__ = Person.prototype * 3.Person.apply(obj,args)有返回值 * 4.return res instanceof Object ? res : obj */ const obj = {} obj.__proto__ = constructor.prototype // 用对象来调用这个构造函数函数,因为new的话是会执行构造函数的,但是这个时候的this需要指向我们定义的对象,这个时候有返回值,如果返回值是对象就最后返回这个对象,如果不是返回obj const res = constructor.apply(obj,[...args]) return res instanceof Object ? res : obj}const obj = _new(Person,18)console.log(obj.name);// Alex-jsonk// 我们也可以再添加方法
以上就是new答代码实现,今天我们就到这
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #newobjectjs