ホームページ  >  記事  >  ウェブフロントエンド  >  JS のプロトタイプ メカニズム: コンストラクターとそのインスタンスの継承と拡張の実装

JS のプロトタイプ メカニズム: コンストラクターとそのインスタンスの継承と拡張の実装

php是最好的语言
php是最好的语言オリジナル
2018-08-06 17:44:371231ブラウズ

JS のプロトタイプ

プロトタイプ メカニズム(prototype)在JavaScript中占有重要的地位,是很重要的一种机制,通过[[prototype]] を使用すると、コンストラクターとそのインスタンスの継承と拡張を簡単に実装できます。

プロトタイプの概念は大まかに以下の図に示されています。詳細については、この記事では主にプロトタイプの実際の適用について説明します。
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 スキル

関連動画:

ビデオ - JavaScript の方向性 - PHP 中国語 Web サイトのチュートリアル

以上がJS のプロトタイプ メカニズム: コンストラクターとそのインスタンスの継承と拡張の実装の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。