>
var Person = function(name){
    this.name = name;
    this.sayName = function () {
        console.log("My Name is "+ this.name);
    }
}
var nitin = new Person("Nitin");
nitin.sayName(); // My Name is Nitin

// Codebreak
var Person = function(name){
    this.name = name;
}
Person.prototype.sayName = function (){
  console.log("My Name is "+ this.name);
}
var nitin = new Person("Nitin");
nitin.sayName(); // My Name is Nitin

JS에서 상속을 받았지만 위의 두 가지 접근법 모두 결과는 동일합니다. 그래서 나는 어떤 접근법을 따르고 왜 혼란 스럽습니까?


  • 답변 # 1

    전자는 생성자 함수로만 구성된 빈 프로토 타입을 가지고 있습니다. 후자는 행동 (sayName)이있는 프로토 타입을 가지고 있습니다.

    원본이 없기 때문에 첫 번째 예에서 동작을 상속 할 가능성은 없지만, 두 번째 예에서는 프로토 타입을 전달하여 상속 할 수 있습니다.

    또한, 메모리 관리/코드 실행 관점에서 프로토 타입이 더 효율적입니다. V8 (Google의 JavaScript 인터프리터) 및 대부분의 다른 JS 인터프리터는 해석 할 때 프로토 타입에서 재사용 가능한 코드를 구성합니다. 이를 통해 서로 다른 여러 기능이 필요하지 않은 공간을 절약 할 수있을뿐만 아니라 필요할 때마다 해당 기능을 구성 할 필요가 없습니다.

  • 이전 email - Gsuite 설정 문제
  • 다음 cordova - Android Oreo에서 알림이 작동하지 않습니다