프로토타입과 생성자 정의 메서드의 장점
JavaScript에서 메서드를 정의할 때 개발자는 해당 메서드를 프로토타입 메서드로 구현하거나 선언할 수 있습니다. 생성자에서 직접 생성합니다. 두 접근 방식 모두 장점이 있습니다.
프로토타입 정의 메서드
예:
function Class() {} Class.prototype.calc = function (a, b) { return a + b; } // Two instances share the same calc() method var ins1 = new Class(), ins2 = new Class(); console.log(ins1.calc(1,1), ins2.calc(1,1)); // Outputs 2, 2 // Updating the prototype method affects both instances Class.prototype.calc = function() { return Array.prototype.slice.apply(arguments).reduce((a, b) => a + b); } console.log(ins1.calc(1,1,1), ins2.calc(1,1,1)); // Outputs 3, 3
그러나 프로토타입 메소드는 내부에 정의된 비공개 변수에 액세스할 수 없습니다. constructor.
생성자 정의 메서드
함수 대 변수 "클래스" 선언
함수 리터럴(예: var Class = function () {}) 또는 함수 선언(예: function Class () {}) 사용 중에서 선택하는 경우 후자는 다음과 같습니다. 함수 이름을 범위의 맨 위로 "호이스팅"할 수 있어 함수가 정의되기 전에 호출하여 발생할 수 있는 오류를 방지할 수 있기 때문에 선호됩니다.
위 내용은 프로토타입과 생성자 정의 메서드: JavaScript에 가장 적합한 메서드는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!