>웹 프론트엔드 >JS 튜토리얼 >JavaScript_Basic 지식의 프로토타입과 생성자에 대한 간략한 요약

JavaScript_Basic 지식의 프로토타입과 생성자에 대한 간략한 요약

WBOY
WBOY원래의
2016-05-16 16:53:201244검색

1. 생성자
생성자의 값은 함수입니다. JavaScript에서는 null 및 undefed 유형이 아닌 값, 배열, 함수 및 객체에 생성자 속성이 있습니다. 생성자 속성의 값은 값, 배열, 함수 또는 객체의 생성자입니다. 예:

코드 복사 코드는 다음과 같습니다.
var a = 12, // Number
b = 'str', // 문자열
c = false, // 부울 값
d = [1, 'd', function() { return 5 }], // 배열
e = { 이름: 'e' }, // Object
f = function() { return 'function' } // 함수

console.log('a: ', a.constructor ); / / Number()
console.log('b: ', b.constructor); // String()
console.log('c: ', c.constructor); )
console.log('d: ', d.constructor); // Array()
console.log('e: ', e.constructor); // Object()
console. log(' f: ', f.constructor); // 함수()

위 생성자는 모두 JavaScript에 내장되어 있습니다.

코드 복사와 같이 생성자를 사용자 정의할 수도 있습니다. 코드는 다음과 같습니다:

function A(name) {
this.name = name;
}

var a = new A('a');

console.log(a.constructor); // A(이름)

생성자를 호출할 때 new 키워드를 사용해야 합니다. 생성자는 객체를 반환합니다.

코드 복사를 보면 알 수 있습니다. 코드는 다음과 같습니다.
var a = 4;
var b = new Number(4);

console.log('a : ', typeof a) ; // a: 숫자
console.log('b: ', typeof b) // b: 객체

2. 프로토타입
프로토타입은 함수의 속성입니다. 기본적으로 함수의 프로토타입 속성 값은 함수와 동일한 이름을 가진 빈 개체입니다. 물체. 예:

코드 복사 코드는 다음과 같습니다.
function fn() {}

console .log(fn.prototype); // fn { }

prototype 속성은 주로 다음과 같이 JavaScript에서 상속을 구현하는 데 사용됩니다.

코드 복사 코드는 다음과 같습니다.
function A(이름) {
this.name = 이름;
}

A.prototype.show = function() {
console.log(this. name);
};

function B(이름) {
this.name = 이름;
}

B.prototype = A.prototype;

var test = new B('test');

test.show() // 테스트

여기에 문제가 있습니다. 테스트 생성자는 실제로 함수 B가 아닌 함수 A입니다.

코드 복사 코드
console.log(test.constructor); // A(name)


B.prototype = A.prototype이 B의 생성자를 변경하기 때문입니다. 프로토타입을 A로 변경하므로 B.prototype의 생성자를 복원해야 합니다.
코드 복사 코드는 다음과 같습니다.
함수 A( 이름) {
this.name = 이름;
}

A.prototype.show = function() {
console.log(this.name) ;
};

함수 B(이름) {
this.name = 이름;
}

B.prototype = A.prototype;
B. 프로토타입.constructor = B;

var test = new B('test');

test.show() // 테스트
console.log(test.constructor); // B(이름)

이 작업을 수행하는 이유는 프로토타입의 값이 객체이고 생성자, 즉 생성자 속성의 값이 프로토타입이 속한 함수, 즉

코드 복사 코드는 다음과 같습니다.
console.log(A.prototype.constructor === A); >
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.