생성자가있는 객체를 만들 때 그 속성이 추가됩니다. 그리고 이것에 추가 된 속성은 실제로 엔티티와 변경되지 않으며, 현재 우리의 접근 방식은 비효율적으로 보일 것입니다. 예를 들어:
그녀의 기능 () {this.name = 'Anna';}이것은 우리가 new her ()로 인스턴스 객체를 만들 때마다 새로운 이름 속성을 생성하고 속성에 속하는 메모리에 자체 저장 공간을 가지고 있음을 의미합니다. 실제로, 우리는 모든 인스턴스 가이 이름 속성을 공유 할 수 있도록 프로토 타입에 이름 속성을 추가 할 수 있습니다.
그녀의 () {} hhe.prototype.name = 'Anna';이런 식으로, 우리가 새 그녀 ()를 사용하여 객체를 만들 때, 이름 속성은 더 이상 새 객체의 사유지가 아니라 객체의 프로토 타입에 추가됩니다. 이 접근법은 매우 효율적이지만 인스턴스 객체의 불변 속성을위한 것입니다. 이것은 확실합니다. 이 속성을 변경하면 생성 된 모든 새 개체의 속성이 변경됩니다. 이것은 우리가 원하는 것이 아닙니다 ~~~. 물체의 공개 속성은이 접근법에 특히 적합합니다.
여기에서는 이전 예를 개선하겠습니다.
function her () {}; hhe.prototype.name = 'Anna'; her.prototype.tostring = function () {return this.name;} function his () {}; his.prototype = new her (); his.prototype.constructor = his; his.prototype.sex = '여성';보시다시피, 우리는 보통 프로토 타입 객체를 확장하기 전에 관련 상속 재산의 구성을 완료합니다.
기능 자식 (f, m) {this.eat = f; this.don = m;} child.prototype = new his (); child.prototype.constructor = child; child.prototype.name = 'jok'; child.prototype.fun = function () {return this.eat this.don}보시다시피, TOSTRING () 호출의 차이점은 실제로 무대 뒤에서 소수의 작업 일뿐입니다. 주요 차이점은 속성입니다. 방법의 검색 작업은 그녀의 프로토 타입에서 더 많이 발생합니다.
공유 속성을 프로토 타입으로 마이그레이션하는 위의 JavaScript 구현 방법은 내가 공유하는 모든 컨텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.