javascriptの原型

1856 ワード

javascriptの基本的な対象は、Number、String、Boolean、null、undefinedがES 6にSymbolを追加しました.これらの基本タイプはスタックに格納される.Funct、Object、Arayなどのデータタイプは、ヒープに格納されます.参照タイプはスタックに保存されています.実際のメモリのアドレスは、スタック内のデータを指します.
内蔵オブジェクトは何がありますか?
  • データパッケージの種類は、Object、Aray、Number、String、Booleanです.
  • 他のオブジェクト:Function、Agments、Math、Date、RegExp.
  • Objectはすべてのオブジェクトの親オブジェクトです.javascriptにはオブジェクトとオリジナルオブジェクトが内蔵されており、オブジェクトはオリジナルオブジェクトのサブセットが内蔵されています.
    内蔵オブジェクトはエンジン初期化段階で作成されたオブジェクトです.元のオブジェクトには、実行中に動的に作成されたオブジェクトも含まれています.元のオブジェクトはNew後のオブジェクトで、内蔵オブジェクトはNewは必要ありません.すべての内蔵オブジェクトは元のオブジェクトであり、内蔵の構造関数は内蔵のオブジェクトであり、構造関数でもあります.各オブジェクトはその内部で属性を初期化します.すなわち、プロトタイプです.
    内蔵オブジェクトの原型を変更:
    prototypeオブジェクトはオブジェクト指向を実現する重要な機構である.プロトタイプによってオブジェクトの原型を変更することができます.Array.prototype.forEach = function(fn){ for ( var i = 0; i < this.length; i++ ) { fn( this[i], i, this ); } };はArayのプロトタイプ方法forEachを追加し、その機能は「=」の右側の論理実装である.var test =["a", "b", "c"]; test.forEach(function(value, index, array){ assert( value, "Is in position " + index + " out of " + (array.length - 1) ); });コード出力:PASS Is in position 0 out of 2 PASS Is in position 1 out of 2 PASS Is in position 2 out of
    プロトタイプの拡張にはリスクがあります.Object.prototype.keys = function(){ var keys = []; for ( var i in this ) keys.push( i ); return keys; }; var obj = { a: 1, b: 2, c: 3 }; obj.keys()obj.keys(); //["a", "b", "c", "keys"] forループは、プロトタイプ属性、カスタム属性を含むオブジェクトのすべての属性を巡回します.
    オブジェクトがプロトタイプチェーン上の属性ではなくカスタム属性を含んでいるかどうかを判断するためには、Object.prototypeから継承されたhasOwnProperty方法を使用する必要があります.for inを推奨する場合は、必ずハスOwnPropertyを使用します.
    以下の原型の使い方に注意してください.
    aa.prototype.bb=XXX(aaオブジェクトのプロトタイプに属性bbを追加し、aaのポインタは変化していません.)aa.prototype=bb(aaオブジェクトのプロトタイプを別のオブジェクトbbに向け、メモリのポインタがbbに向けられ、変化が発生しました.aa.bb=XXX(bbはオブジェクトaaのカスタム属性で、プロトタイプが拡張されていません.)