JavaScript 생성자의 단점은 개체가 인스턴스화될 때마다 인스턴스 간에 동일한 메서드가 있는 경우 속성과 메서드가 복사된다는 것입니다. 단, 생성자에 정의된 속성과 메서드에 액세스할 수 있지만 각 인스턴스는 모두 복사되므로 시스템 리소스가 낭비됩니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, JavaScript 버전 1.8.5, Dell G3 컴퓨터.
instanceof를 통해 개체를 식별할 수 있다는 장점이 있습니다. 단점은 개체가 인스턴스화될 때마다 속성과 메서드가 복사된다는 것입니다. 위의 실행 결과를 보면 obj1.showUserName과 obj.showUserName은 동일하지 않지만(js에서는 참조 유형이 주소를 비교하고, 함수는 참조 유형임)
메모리 주소가 2개 있음을 알 수 있습니다. , 각 객체의 속성이 다르기 때문에 문제가 없지만 메소드가 동일한 코드를 실행하므로 복사할 필요가 없으며 이는 메모리를 낭비합니다.
지식 확장생성자: 함수를 사용하여 초기화하는 경우(new 연산자 사용) 새로 생성된 객체를 생성자라고 부릅니다.
function CreateObj(uName) { this.userName = uName; this.showUserName = function () { return this.userName; } } var obj1 = new CreateObj('ghostwu'); var obj2 = new CreateObj('卫庄'); console.log( obj1.showUserName === obj2.showUserName ); //false생성자가 new로 호출되면(var p = new Person( 실행) )) 다음은 함수 내에서 발생합니다. 1. 빈 개체
function Person(){ this.name = "zqq"; this.age = 28; } var p = new Person();2를 만듭니다. 이 변수는 개체 p
var p = {};3.p를 가리키며 생성자 Person()
Person.call(p)4의 프로토타입을 상속합니다. 생성자 Person()
Constructor에서 코드를 실행합니다. 일반 함수와의 차이점:
1 생성자는 new 키워드를 사용하여 호출됩니다. 일반 함수는 new 키워드로 호출되지 않습니다. 생성자 내에서 사용할 수 있습니다. 이때 this는 창 전역 개체를 가리키므로 의도치 않게 일부 전역 변수나 함수를 창에 추가합니다. 생성된 새 객체를 가리킵니다. 이것은 창 전역 객체입니다
3. 생성자는 기본적으로 반환 값을 반환할 필요가 없습니다. 생성자는 일반적으로 반환 값을 갖습니다. 이건 기본적으로 새로운 인스턴스 객체를 반환합니다일반 함수에 반환값이 없으면 undefine을 반환합니다return을 사용하면 반환값의 종류에 따라 반환값이 달라집니다 [관련 추천:javascript 비디오 튜토리얼
,웹 프론트엔드
]위 내용은 자바스크립트 생성자 메소드의 단점은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!