Times의 발전으로 인해 JavaScript 캠프에는 점점 더 뛰어난 프레임 워크가 나타났습니다. 기성품 API를 사용하는 것에 만족하지 않고 내부 구현 메커니즘을 깊이 이해하고 있다면 (누군가가 가장 빠른 감가 상각 일입니다) 소스 코드를 읽는 것입니다 당신이 그것을 이해할 수 있다는 것입니다.
지난 이틀 동안 jQuery 의 소스 코드를 연구했습니다. 좋아, jQuery가 어떻게 작동하는지 살펴 보겠습니다. 이 기사는 JS의 수업, 대상, 기능, 프로토 타입 등과 같은 개념을 이해하지 못하는 친구에게는 적합하지 않습니다.
처음부터 시작하겠습니다.
먼저, 우리의 프레임 워크가 Shaka (내 이름;)라고 가정하면 사용자를위한 객체를 구성합니다.
var shaka = function () {}; 여기에 아무것도없는 빈 함수를 만듭니다.이 기능은 실제로 우리의 생성자입니다. 생성 된 객체가 프로토 타입에 정의 된 메소드를 호출하려면 프로토 타입에서 Shaka에 몇 가지 방법을 추가해야합니다 (Shaka를 클래스로 복용).
shaka.fn = shaka.prototype = {};
여기에서 Shaka.fn은 Shaka.prototype의 별칭과 동일하며, 이는 향후 동일한 참조를 가리 킵니다.
자, Sayhello에 메소드를 추가하고 Shaka에 매개 변수를 추가하겠습니다.
코드 박스를 실행하십시오
[Ctrl+A 모든 선택 팁 : 먼저 코드를 수정 한 다음 실행을 누릅니다]
좋아, 흥분하지 마십시오. 예를 들어 JQ에서는 다음과 같은 쓸 수있는이 프레임 워크와 사용중인 jQuery 사이에 차이가 있음을 알았습니다.
jQuery ( '#myid'). somemethod ();
이 작업은 어떻게 작동합니까? 즉, 생성자 jQuery ()는 jQuery 인스턴스를 반환하므로 위의 메소드를 호출 할 수 있으므로 Shaka의 생성자는 인스턴스를 반환해야합니다.
var shaka = function () {return // shaka의 인스턴스를 반환합니다.
그렇다면 Shaka의 인스턴스를 어떻게 얻을 수 있습니까? MyClass 함수, 즉 클래스 생성자 및 someOBJ는 MyClass.prototyp에 정의 된 메소드를 얻습니다.