어떻게 자바 스 크 립 트 의 new 키 워드 를 실현 합 니까?

아래 코드 관찰:
//       
function Person(name) {
    this.name = name
}

Person.prototype.getName = function() {
    return this.name
}

// new      
const objectFactory = function() {
    let obj = new Object() //  Object.prototype       
    
    let Constructor = [].shift.call(arguments) //           

    obj.__proto__ = Constructor.prototype //        

    let ret = Constructor.apply(obj, arguments) //            obj    

    return typeof ret === 'oject' ? 'ret' : obj //              
}

테스트:
const a = objectFactory(Person, 'Tom')

const b = new Person('Tom')

Object.getPrototypeOf(a) === Person.prototype // true

이로써 object Factory 는 new 키워드 와 같은 효 과 를 가 진 것 으로 나 타 났 다.

좋은 웹페이지 즐겨찾기