프로토 타입과 폐쇄는 가장 일반적이며 이해하기 어려우며 JavaScript에서 문제의 두 부분으로 가장 쉽게 간주됩니다. 물론, 그들은 또한 스코프 체인, 상속 등과 같은 확장을 가지고 있습니다. 최근에, 나는 또한 다양한 방식으로 읽고, 모든 것을 뒤집고, 내 자신의 경험을 녹음했습니다. 글쓰기는 항상 내 이해를 더 깊게 만들 것입니다. (제목과는 아무런 관련이 없어서 한숨을 쉬었다. 이해할 때마다 읽은 후에도 여전히 많은 보상을받습니다).
먼저 JavaScript의 새로운 키워드에 대해 이야기합시다. 일반적으로 클래스의 인스턴스 객체를 만드는 데 사용합니다. JavaScript에서 객체를 인스턴스화 한 후 클래스의 속성과 방법을 상속합니다. 코드를 통해 시연합시다
함수 person (name) {this.name = name;} person.age = "23"; person.prototype.say = function () {console.log ( "I 'm" + this.name);}; var person = new Person ( "Wang Fang"); console.log (person.name, // Wang Fang Person.height // undefined); person.say (); // I 'm Wang Fang Console.log (person.name, // persone.age // 23); person.say (); //person.say는 함수가 아닙니다이 줄을 살펴 보겠습니다
var person = 새로운 사람 ( "Wang Fang");
New는 무엇을 했습니까? 다음은 JS Engine의 작업이하는 일입니다.
var obj = {}; obj .__ proto__ = person.prototype; var result = person.call (obj, "wang fang"); return typeof result === 'obj'? 결과 : OBJ;1. 먼저 새 개체를 만듭니다
2. Point Obj의 __proto__ to Person의 프로토 타입 객체 프로토 타입으로, 그리고 OBJ 객체의 프로토 타입 체인이 설정됩니다 : obj-> person.prototyp-> object.prototype-> null
3. OBJ 객체의 실행 공간에서 개인 기능을 호출하고 매개 변수 "Wang Fang"을 전달하십시오. var result = obj.person ( "Wang Fang")과 동일합니다. 이 문장이 실행 된 후 OBJ는 속성 이름을 생성하여 "Wang Fang"에 할당합니다.
4. 리턴 값을 결정하십시오. 반환 값이 없거나 객체가 아닌 값이 반환되면 OBJ를 반환하십시오. 그렇지 않으면 반환 값이 새 개체로 반환됩니다 (비트 트위스트, 삼원 연산자, 직접 확인하십시오).
요약 :
JavaScript의 새로운 키워드의 주요 기능은 위의 예에서 언급 한 것처럼 상속이지만, 사람은 기능이지만 사람은 대상이라는 것을 기억하십시오. 함수와 객체의 차이에 관해서는 시간이 있으면 다시 쓸 것입니다.
위는이 기사의 모든 내용입니다. 모든 사람의 학습에 도움이되기를 바랍니다. 모든 사람이 wulin.com을 더 지원하기를 바랍니다.