レビュー: 1、 関数学生(名前、年齢){ この .nameの=名; この .age =年齢; } Student.prototype = {//のいずれかを実行 のsayHello:関数(){ にconsole.log( "NiHao"を) ; } }; VAR P =新しい新しい学生(「zhansa」,. 19); コード分析: 1、最初の事前分析プロセス、プロトタイプオブジェクトstudent.Prototype構築中、コンストラクタ学生を宣言
2を、最初の行の最初の文実行。プロトタイプオブジェクトを再カバーしています。元のオブジェクトは、もはやデフォルトのポイントではありません
3、これは現在のオブジェクトのコンストラクタを指し、オブジェクト、新しいオブジェクトを作成するには、
4ちょうどそれは名前、年齢を提供して作成した対象の属性にオブジェクトの動的特性を使用して、コンストラクタ内で、 、とき引数は、「zhansa A」)コンストラクタ着信コール 19 B)したがって、オブジェクト属性。。。 c)オブジェクトの初期化が完了した後、変数Pへのオブジェクトのリターンアドレス
。5 、発呼方法。pはsayHelloメソッドを呼び出す a)まずチェックオブジェクトは、p sayHelloメソッドので指されない で、プロトタイプオブジェクトで次に)B Student.prototypeを ので、それを呼び出すために、新たなプロトタイプオブジェクトがのsayHello)C た方法で)~Dプリント
オブジェクト。作成方法
ある ES5 導入された新しい方法が。
構文:
オブジェクト。ザ・作成プロトタイプ(オブジェクト)新しいオブジェクトを返し、オブジェクトパラメータで表現された新しいオブジェクトを返します。
機能:パラメータオブジェクトを作成するために、プロトタイプから継承された実装の継承、
例えば:
VaRの O = { のsayHello:関数(){} }; VARの O1 = Object.create(O); // オブジェクトO1、すなわち、新たなオブジェクトのプロトタイプは__proto__ Oで作成 o1.sayHelloを(); // JSオブジェクトは、キーと値のペアのコレクション[キーである:値} VARの ARR = ; Object.create([]) // 。1、格納されたデータ arr.push(1 ); (arr.push 2 ); arr.push( 2,3、 4,5,6,7 ); // 2、トラバーサル のための(VAR Iはarr.lengthを<; I ++はI = 0 ){ にconsole.log( '[' + I + '] =' + ARR [I])。 }
演習:お使いのブラウザはサポートしていない場合。オブジェクトの作成を行う方法
VaRの O = { のsayHello:関数(){} }; VARの O1 = Object.create(O); // オブジェクトO1、すなわち、新たなオブジェクトのプロトタイプは__proto__ Oで作成 o1.sayHelloを(); // JSオブジェクトは、キーと値のペアのコレクション[キーである:値} VARの ARR = ; Object.create([]) // 。1、格納されたデータ arr.push(1 ); (arr.push 2 ); arr.push( 2,3、 4,5,6,7 ); // 2、トラバーサル のための(VAR Iはarr.lengthを<; I ++はI = 0 ){ にconsole.log( '[' + I + '] =' + ARR [I])。 } //は以下のように、内蔵されたオブジェクトを変更しないでください: //IF(!Object.create){ // Object.create =関数(){} // } // この関数のプロトタイプは、継承を達成するために、オブジェクトがOBJから継承されて戻されるべき 機能継承(OBJの){ IF (Object.create) { 戻りObject.create(OBJに); } そうでなければ{ 関数F(){} F.prototypeは = OBJに、 戻り 新しい新しいF.を(); } }
ARR([])=継承しました。
オブジェクトのプロトタイプチェーン
1、 すべてのオブジェクトは、プロトタイプを持っています
2、 試作品も対象
問題
1 、最後にプロトタイプチェーンヘッド 2 の構造であり、どのようなデフォルトのプロトタイプチェーン 3、文法修正既知プロトタイプ鎖構造
プロトタイプチェーン
コンストラクタを使用して、デフォルトのプロトタイプチェーンを維持するために、オブジェクトのうちの作成、変更、割り当てプロトタイプを使用する方法がない人たち。
デフォルトのプロトタイプチェーン構造が似ているのですか?
デフォルトでは、オブジェクトの現在のプロトタイプチェーン構造である - > コンストラクタ。Prototype-> オブジェクト。Prototype-> ヌルを
原型継承とは何ですか
いわゆるプロトタイプスタイルは、チェーン全体のすべてのメンバーを使用することができる修飾されたプロトタイプ継承鎖構造(削除、追加、変更)対象の死後インスタンスの使用であります
ここではルールがあります。
で JS 解析は、特定のオブジェクトのコンストラクタメソッド呼び出しは、に対応するものとして理解することができるされた後、全てのオブジェクトリテラル
例えば、コードは「の等価、「{}」で記述されている1、新しい新しいオブジェクト()」 2は、例えば、コードは「の等価、「[]」に書き込まれる新たな新しいアレイ()」 3は、例えば、コードは'で書かれています/。/「」と等価で新しい新 ')(正規表現
注意:基礎となる理論の実行中は、ブラウザのバージョンとは限らない、コンストラクタを呼び出すがある場合。
で JS の使用ファンクション関数オブジェクトをインスタンス化することができます。それは関数オブジェクトであります
1は、あなたがオブジェクトの動特性関数を使用することができるされているオブジェクト 2は、機能が追加のオブジェクトを作成することができる機能である 3を、唯一の機能は、定義された結果変数範囲とすることができます
問題を解決するために、
1、 機能の使用方法
2、 ファンクション機能との関係
図3に示すように、 鎖構造の関数のプロトタイプ
関数である関数のインスタンス
構文:新新機能(arg0は、ARG1 、ARG2。 ...)
。1、 関数のすべてのパラメータは文字列です
2、 コンストラクタのパラメータの役割、機能をアップ配線されています
A) のみ1つのパラメータは、関数本体を表す場合
B) 複数のパラメータがある場合、最後のパラメータは、他のパラメータが示す、関数本体を示し
C) 引数がない場合、それは空の関数を作成することを意味します
引数
引数が関数呼び出し中にパラメータの着信セットのすべてを表すオブジェクトの配列です。
関数呼び出し中に所定の数及びパラメータの種類、したがって、関数呼び出しの柔軟性はありません。
使いやすさのために、各関数呼び出し、関数のコードとデフォルトのオブジェクトの本体の処理引数ザ実際に渡されるすべてのパラメータを記憶します。
JS 関数としてパラメータを渡す方法を指定しません。
1を呼び出すときに、パラメータを記述しないで定義された関数は、パラメータとして渡すことができる 2を使用すると、パラメータ渡すことができないとき、書く時間のパラメータの定義は、呼び出し コールは、できるだけ多くを渡すことができたときに3は、定義された時間パラメータを書きましたパラメータ
場合に必要なパラメータの関数とコードの設計では、一般的に任意のパラメータではない、すべてのパラメータが使用引数を得るために
関数foo (/ * ... * / ){}
関数FOO(){ // 配列としてた引数のすべてのパラメータ、 // 問題 VARの引数の=の引数; VARの最大=引数[0 ]; のための(VAR I = 1; I <args.length。 ++ I ){ IF(MAX < 引数[I]){ 最大 = 引数[I]; } } 戻りmaxは; } にconsole.log(FOO( 1,2,3,4,34,2,34234))。
なぜ使う機能を?
関数プロトタイプチェーン構造:
任意的一个函数,都相当于Function的实例。类似于{}与new object()的关系
Function foo(){}
相当于告诉解释器,又一个对象foo,它是一个函数
相当于new Function(),因此:
1、函数应该有什么属性?‘__proto__’; 2、函数的构造函数Function() 3、函数继承自Function.Prototype 4、Function.prototype继承自object.Prototype
小结:
Object构造函数是Function的一个实例
Object作为对象继承自Function.prototype.又F.prototype继承自Object.prototype
Function是自己的构造函数(*****)
绘制Function的构造原型实例三角形结构
1、在js中任何对象的老祖宗就是Object.prototype
2、在js中任何函数的老祖宗就是Function.Prototype
小结:
每个函数都有prototype属性指向原型自定义的没有; 每个对象都有—proto-属性指向原型; __proto__属性是为了能够直接使用原型的方法。
小结:
Object.create最简单原型继承
对象原型链