JS의 프로토타입 메커니즘: 생성자와 해당 인스턴스의 상속 및 확장 구현

php是最好的语言
풀어 주다: 2018-08-06 17:44:37
원래의
1196명이 탐색했습니다.

JS의 프로토타입

프로토타입 메커니즘(prototype)在JavaScript中占有重要的地位,是很重要的一种机制,通过[[prototype]]을 사용하면 생성자와 해당 인스턴스의 상속과 확장을 쉽게 구현할 수 있습니다.

프로토타입의 개념은 아래 그림과 같습니다. 자세한 내용은 MDN을 참조하세요. 주로 프로토타입의 실제 적용에 대해 설명합니다.
JS의 프로토타입 메커니즘: 생성자와 해당 인스턴스의 상속 및 확장 구현

jQuery 및 zepto의 프로토타입 메커니즘을 참조하십시오. 프로토타입의 적용은 대략 다음과 같은 부분으로 나뉩니다.

  • 생성자 정의

  • 생성된 인스턴스 인터페이스 정의

  • 초기화 함수 정의

  • 확장 인터페이스 제공(플러그인 메커니즘)

  • 외부 인터페이스 제공

  • 프로토타입 바인딩

나만의 라이브러리 파일(Sojourn.js) 만들기

(function (window) {
  // 定义属于自己的对象
  var Sojourn = {}  // 定义构造函数
  function S(dom, selector) {
    var i, len = dom ? dom.length : 0;    for (i = 0; i < len; i++) {      this[i] = dom[i];
    }    this.length = len;    this.selector = selector || &#39;&#39;;
  }  // 定义生成实例接口
  Sojourn.S = function (dom, selector) {
    return new S(dom, selector);
  }  // 定义初始化函数
  Sojourn.init = function (selector) {
    var slice = Array.prototype.slice;    var dom = slice.call(document.querySelectorAll(selector));    return Sojourn.S(dom, selector);
  }  // 提供对外接口
  var $ = Sojourn.init;  // 提供扩展接口
  $.fn = {
    constructor: Sojourn.S,    // 添加方法

    // 定义一个修改元素html内容的方法
    html: function (content) {
      console.log(this);      if (content) {        this[0].innerHTML = content;
      } else {
        alert(&#39;no change&#39;);
      }      // 返回dom对象以实现链式调用
      return this;
    }
  }  // 绑定原型
  Sojourn.S.prototype = S.prototype = $.fn;  // 绑定到全局对象
  window.$ = $;
})(window)
로그인 후 복사

HTML에서 Sojourn.js 사용

<!DOCTYPE html><html lang="en"><head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>prototype-test</title></head><body>
  <p id="p1">prototype test</p>

  <script src="./sojourn.js"></script>
  <script>
    // 一秒钟后使用构造的方法改变dom元素
    setTimeout(function () {
      var p1 = $(&#39;#p1&#39;);      // 链式调用
      p1.html().html(&#39;use Sojourn.js&#39;);      // 扩展插件
      $.fn.getNodeName = function () {
        alert(this[0].nodeName);
      }

      p1.getNodeName();
    }, 1000);  </script></body></html>
로그인 후 복사

관련 기사:

JS 프로토타입 상속의 4단계

JS 클래스 상속 및 프로토타입 상속 자세한 설명_Javascript 기술

관련 동영상:

Video-JavaScript 방향-PHP 중국어 웹사이트 튜토리얼

위 내용은 JS의 프로토타입 메커니즘: 생성자와 해당 인스턴스의 상속 및 확장 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!