前言:
今天给大家分享一下手写 Object.create 函数。
函数功能:
Object.create()
方法创建一个新对象,使用现有的对象来提供新创建的对象的__proto__
代码:
function create(parentPrototype, props) {
function Fn() {
}
Fn.prototype = parentPrototype;
let fn = new Fn();
for (let key in props) {
Object.defineProperty(fn, key, {
enumerable: true, // 如果不枚举对象中无法查看到这个对象
...props[key]
})
}
return fn
}
function Parent() {
this.name = "parent";
}
Parent.prototype.eat = function () {
console.log("eat");
};
function Child() {
this.age = 9;
Parent.call(this);
}
Child.prototype = create(Parent.prototype, { constructor: { value: Child } });
// { constructor: { value: Child } } 这段代码保证 Child 的 prototype 的 constructor 还指向 Child 的构造函数
let child = new Child();
console.log(child.constructor,'constructor'); // [Function: Child] 'constructor'
child.eat() // eat
感谢观看,有任何疑问可以直接留言 !