1.データの種類を決定し、私たちが最も頻繁にデータの種類を決定するためにtypeofを使用し、これらは、リターンオブジェクトですが、Object.prototype.toString()ので、欠点は、よく判断ヌル、配列、定期的、機能ではありません。コール(値)は、この問題を解決し
VAR配列= [1,2,3]、 nullobj =ヌル、 FN =関数(){アラート(1)}、 REG = / ^ [1-4] $ /。 console.log(Object.prototype.toString.call(配列))// '[オブジェクト配列]' はconsole.log(Object.prototype.toString.call(nullobj))// '[オブジェクトヌル]' はconsole.log( Object.prototype.toString.call(FN))// '[オブジェクト機能]' はconsole.log(Object.prototype.toString.call(REG))// '[オブジェクトの正規表現]'
2.バインド機能
例2.1:
document.getElementById BTNは、VAR( 'BTN')= VAR = {ハンドラ : '赤'、色 関数(){:handleClick にconsole.log(this.color) } } 実行されたとき、btn.onclick = handler.handleclick //未定義これは、DOMボタンを指し、
上記の実施例2.1では、これはこの点ハンドラ、利用可能なクロージャ溶液、2.2以下の実施例を、DOMボタンを指します。
2.2例:
VaRのBTN =のdocument.getElementById( 'BTN') VARハンドラ= { 色: '赤'、 handleclick:関数(){ にconsole.log(this.color) } } btn.onclick =関数(){ handler.handleclick() //赤、执行时、この指的に是ハンドラ }
また、また、書き込み機能を結合し、機能が環境にバインドすることができ、以下の例2.3
2.3例:
document.getElementById BTNは( 'BTN')VARを= VAR = {ハンドラ : '赤'、色 関数(EV){:handleClick にconsole.log(ev.type) にconsole.log(this.color) } } (バインド関数fnを、コンテキスト){ return関数(){ fn.apply返す(文脈、引数)//注意引数は組み込み関数の引数を参照すること、を結合しない } } btn.onclick =バインド(handler.handleclick、ハンドラ)/ /クリックして、赤の出力
上記と同様のネイティブbindメソッドは、我々はこのようなオブジェクトを渡す必要があります