ホームページ ウェブフロントエンド jsチュートリアル JSチェーンcall_javascriptスキルの実装方法

JSチェーンcall_javascriptスキルの実装方法

May 16, 2016 pm 05:40 PM
js チェーンコール

チェーンコール
チェーンコールは実際には単なる文法トリックです。初期操作を再利用することで、複雑な操作を少量のコードで表現できます。このテクノロジーは 2 つの部分で構成されています:

HTML 要素を表すオブジェクトを作成するファクトリ。

この HTML 要素に対して特定の操作を実行するメソッドのバッチ。

呼び出しチェーンの構造
$ 関数は、チェーン呼び出しをサポートするオブジェクトの作成を担当します

コードをコピー コードは次のとおりです。

(function() {
/ *
* プライベート クラスを作成します
* @param {Object} els 引数 すべてのパラメータで構成されるクラス配列
*/
function _$(els) {
this.elements = [ ]; // HTML 要素
for(var i=0, len=els.length; i<len; i ) {
var element = els[i];
if(typeof element == = 'string' ) {
element = document.getElementById(element); HTML 要素が実行できるアクション
_$.prototype = {
each: function() {},
setStyle: function () {},
show: function() {},
addEvent: function() {},
} );



すべてのオブジェクトはそのプロトタイプ オブジェクトのプロパティとメソッドを継承するため、プロトタイプ オブジェクトで定義されたメソッドがメソッドの呼び出しに使用されるインスタンス オブジェクトへの参照を返すようにして、それらのメソッドをチェーンで呼び出すことができるようにすることができます。 。





コードをコピー
コードは次のとおりです:


(function() {
/*
* プライベート クラスを作成します
* @param {Object} els 引数 すべてのパラメータで構成されるクラス配列
*/
function _$(els) {
//...
}
//HTML 要素に対して実行できる操作
_$.prototype = {
each: function(fn) { / /fn コールバック関数
for(var i=0; i //要素 elements[i] をパラメータとして渡し、len 回実行します
fn.call(this, this.elements[i]);
}
el) {
el.style[prop] = value;
var that = this;
this.each(function(el) {
that.setStyle('display', 'block');
});
return this;
},
addEvent: function ( type, fn) {
var addHandle = function(el) {
if(document.addEventListener) {
el.addEventListener(type, fn, false);
}else if(document.attachEvent ) {
el.attachEvent('on' type, fn);
}
};
this.each(function(el) {
addHandle(el);
} );
これを返します 🎜> }

})();

//---------- テスト --------
$(window).addEvent('load' , function () {
$('test-1', 'test-2').show()
.setStyle('color', 'red')
.addEvent('click', function( ) {
$(this).setStyle('color', 'green');
});
})



連鎖呼び出しメソッドを使用したデータの取得 コールバック関数を使用して、連鎖呼び出しをサポートするメソッドからデータを取得します。連鎖呼び出しはアサイナー メソッドには適していますが、ゲッター メソッドの場合は、これ (メソッドが呼び出されるオブジェクト) の代わりに必要なデータを返すようにしたい場合があります。 解決策: コールバック テクノロジを使用して、必要なデータを返します。





コードをコピー


コードは次のとおりです:


window.API = window.API || function() {
var name = 'mackxu';
//Privileged method
this.setName = function(name0) {
name = name0;
return this;
};
this.getName = function(callback) {
callback.call(this, name);
return this;
} ;
};
//------------- test ---
var obj = new API();
obj.getName(console.log) .setName('zhangsan').getName(console.log);

Design a JS library that supports method chain calling
JS library features:

Events: Add and delete event listeners, and plan event objects

DOM: Class name management, style management

Ajax: Normalize XMLHttpRequest

Copy code The code is as follows:

Function.prototype.method = function(name, fn) {
this.prototype[name] = fn;
return this;
};
(function() {
function _$(els) {
//...
}
/*
* Events
* addEvent
* removeEvent
*/
_$.method('addEvent', function(type, fn) {
 > *RemoveClass
*Hover
*Hasclass
*getClass
*getstyle
*setstyle
*/
.method ('addclass' e) {            //...
                            .method('removeClass', function(classname)                                                  
                                                                                                                                              .
                                                                                                                                 . ) {
//...
})
/*
* AJAX
* * ajax
*/
.method('ajax', function(url, method ) {
          //...
                     ); /Resolve the JS library naming conflict problem
window.installHelper = function(scope, interface) {
scope[interface] = function() {
return _$(arguments)
}
}
})();



Summary:

Chained calls help simplify code writing and to some extent make the code more concise and readable. In many cases, using chained calls can avoid reusing an object variable multiple times, thereby reducing the amount of code. If you want to keep the interface of the class consistent and make both the assignor and the valuer support chain calls, then you can use a callback function in the valuer to solve the problem of obtaining data.
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JS と Baidu Maps を使用してマップ パン機能を実装する方法 JS と Baidu Maps を使用してマップ パン機能を実装する方法 Nov 21, 2023 am 10:00 AM

JS と Baidu Maps を使用してマップ パン機能を実装する方法

推奨: 優れた JS オープンソースの顔検出および認識プロジェクト 推奨: 優れた JS オープンソースの顔検出および認識プロジェクト Apr 03, 2024 am 11:55 AM

推奨: 優れた JS オープンソースの顔検出および認識プロジェクト

株価分析に必須のツール: PHP と JS を使用してローソク足チャートを描画する手順を学びます 株価分析に必須のツール: PHP と JS を使用してローソク足チャートを描画する手順を学びます Dec 17, 2023 pm 06:55 PM

株価分析に必須のツール: PHP と JS を使用してローソク足チャートを描画する手順を学びます

PHP および JS 開発のヒント: 株価ローソク足チャートの描画方法をマスターする PHP および JS 開発のヒント: 株価ローソク足チャートの描画方法をマスターする Dec 18, 2023 pm 03:39 PM

PHP および JS 開発のヒント: 株価ローソク足チャートの描画方法をマスターする

PHP と JS を使用して株価ローソク足チャートを作成する方法 PHP と JS を使用して株価ローソク足チャートを作成する方法 Dec 17, 2023 am 08:08 AM

PHP と JS を使用して株価ローソク足チャートを作成する方法

JSとBaidu Mapsを使って地図ポリゴン描画機能を実装する方法 JSとBaidu Mapsを使って地図ポリゴン描画機能を実装する方法 Nov 21, 2023 am 10:53 AM

JSとBaidu Mapsを使って地図ポリゴン描画機能を実装する方法

js での new 演算子は何をしますか js での new 演算子は何をしますか Nov 13, 2023 pm 04:05 PM

js での new 演算子は何をしますか

JSと百度地図を使って地図クリックイベント処理機能を実装する方法 JSと百度地図を使って地図クリックイベント処理機能を実装する方法 Nov 21, 2023 am 11:11 AM

JSと百度地図を使って地図クリックイベント処理機能を実装する方法

See all articles