Object.create() 内部的过程中内部做了些啥?

252 阅读1分钟

先看描述, 也就是创建一个以参数为原型的对象。 好的,上代码

function People(name) {
    this.name = name
    this.test = 'People'
} 
People.prototype.name = 'Peopleprototype'  
console.log(People.prototype) 

let a = Object.create(People.prototype) 
console.log(a)

image.png

了解了起作用,我们就来自己实现一个。

function People(name) {
    this.name = name
    this.test = 'People'
} 
People.prototype.name = 'Peopleprototype'  
 
//Object.create() 原方法
let a = Object.create(People.prototype) 
 

// 自己模拟实现
function bridge(obj) {
    let newObj = function () {}; 
    newObj.prototype = obj; 
    let res = new newObj();
    return res
}  
let b = bridge(People.prototype)

console.log(People.prototype) 
console.log(a)  
console.log(b)

可以看到打印结果。

image.png

成功实现,思路:创建一个空函数,就是名字不一样,这个目前还不知道咋改,就是 定义新对象时要用新原型构造函数的名字。 就先到这,后面继续改。 有啥好的办法可以告诉我昂。