其他分享
首页 > 其他分享> > js 手写Object.create

js 手写Object.create

作者:互联网

Object.create, 即生成一个新对象,同时将参数作为新对象的原型链
通过new将构造函数的原型设置到实例对象的原型链上,完成create的功能

基于new方法的方式有个问题,new作用的构造函数必须返回一个引用类型,而我们通常用Object.create(null)来创建一个原型链为空的对象,因为null不是引用类型,所以new会默认给一个对象类型设置为原型链,和预期结果有出入

因此,在这种情况下,这个方式就有问题。
基于这个角度,推荐使用第二种方式

    Object.prototype._create = (target) => {
        function O() { }
        O.prototype = target
        return new O()
    }


    Object.prototype._create2 = (target) => {
        const ret = {}
        ret.__proto__ = target
        return ret
    }

    console.log(Object._create({ a: 1 }))
    console.log(Object._create2({ a: 1 }))
    console.log(Object._create(null))
    console.log(Object._create2(null))

标签:log,create,Object,js,._,new,null
来源: https://www.cnblogs.com/ltfxy/p/16371430.html