JavaScript는 속성과 메서드를 사용하여 사용자 정의 개체를 만드는 데 프로토타입 방식과 클로저 방식이라는 두 가지 고유한 접근 방식을 제공합니다.
이 방식은 JavaScript에 더 가깝고 생성자의 프로토타입 조회 속성을 활용합니다.
function Shape(x, y) { this.x = x; this.y = y; } Shape.prototype.toString = function() { return 'Shape at ' + this.x + ', ' + this.y; }; function Circle(x, y, r) { Shape.call(this, x, y); // Invoke base constructor this.r = r; } Circle.prototype = new Shape(); // Set subclass prototype Circle.prototype.toString = function() { return 'Circular ' + Shape.prototype.toString.call(this) + ' with radius ' + this.r; };
이 방식은 프로토타입 상속을 완전히 피하고 각 인스턴스에 대해 새로운 클로저를 생성합니다.
function Shape(x, y) { var that = this; this.x = x; this.y = y; this.toString = function() { return 'Shape at ' + that.x + ', ' + that.y; }; } function Circle(x, y, r) { var that = this; Shape.call(this, x, y); // Invoke base constructor this.r = r; var _baseToString = this.toString; this.toString = function() { return 'Circular ' + _baseToString.call(that) + ' with radius ' + this.r; }; } var myCircle = Circle(); // Using `new` is optional here
두 가지 방법 모두 장점이 있으며 단점.
프로토타입 방식
클로저 방식
궁극적으로 최선의 선택은 특정 프로젝트 요구 사항과 선호도에 따라 다릅니다.
위 내용은 프로토타입과 클로저: 어떤 JavaScript 객체 생성 방법이 귀하에게 적합합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!