홈>
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
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- vue.js - axios를 사용하여 서버에 이미지를 업로드하는 방법
- python - 문자열에서 특정 문자 제거
전자는 생성자 함수로만 구성된 빈 프로토 타입을 가지고 있습니다. 후자는 행동 (sayName)이있는 프로토 타입을 가지고 있습니다.
원본이 없기 때문에 첫 번째 예에서 동작을 상속 할 가능성은 없지만, 두 번째 예에서는 프로토 타입을 전달하여 상속 할 수 있습니다.
또한, 메모리 관리/코드 실행 관점에서 프로토 타입이 더 효율적입니다. V8 (Google의 JavaScript 인터프리터) 및 대부분의 다른 JS 인터프리터는 해석 할 때 프로토 타입에서 재사용 가능한 코드를 구성합니다. 이를 통해 서로 다른 여러 기능이 필요하지 않은 공간을 절약 할 수있을뿐만 아니라 필요할 때마다 해당 기능을 구성 할 필요가 없습니다.