龙空技术网

javascript中new的实现

Jsonk 68

前言:

如今你们对“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