「JavaScriptを深く理解する」――対象と継承(第1層)
3791 ワード
読んでください.JavaScriptの対象向けプログラミング(OOP)は次のようになります.
第1層:単一オブジェクトのオブジェクト指向
第2層:対象間のプロトタイプチェーン
第3層:実例工場の構造関数として、他の言語のクラスと類似しています.
第4層:サブクラス、既存のコンストラクタを継承することにより、新しいコンストラクタを作成します.
すべての層は前の階に依存しています.順を追って勉強することができます.JavaScript OOP.第1層と第2層は基本的なコアを構成しており、より複雑な第3層と第4層に困惑した場合は、常に前2層を振り返ることができる.
(1)第1層:単一オブジェクト
大まかに言えば、JavaScriptのすべてのオブジェクトは文字列から値へのマッピングです.オブジェクトの一つ(キー、値)が属性となります.属性のキー(key)は常にテキスト文字列です.属性の値は、関数を含む任意のJavaScript値とすることができます.方法は、値が関数の属性です.
1.属性の種類
属性は3種類に分けられます.
①属性(property):オブジェクト中の通常の属性(つまり文字列のキーからマッピングに値する)を含む方法(method)をデータ属性と呼びます.これはこれまでで最も一般的な属性のタイプです.
②アクセス器(Access or):アクセス器は、読み書き属性に似た特殊な方法です.属性の値は通常の属性に格納され、アクセス器は属性の値を計算することができる.それらを仮想的な属性と見なすことができます.
③内蔵属性(Internal property):ECMAScript言語仕様にのみ存在します.彼らはJavaScriptで直接訪問することはできませんが、間接的に訪問できるかもしれません.属性を内蔵するキーをかっこにセットするのを規範化します.例えば、オブジェクトのプロトタイプを持ち、Object.get ProttypeOf()を介してアクセスすることができます.
2.対象文字数
JavaScriptのオブジェクトの字面量は、直接に簡単なオブジェクト(Objectの直接例)を作成することができます.以下は例です.
3.ポイント演算子(.):固定キーで属性にアクセスする
ポイント演算子は、簡潔な構文アクセス属性を提供する.任意の名前や読み書き属性を使いたい場合は、中かっこ操作符([]を使用します.
属性を取得:
取得方法:
属性を削除:
delete操作によって、一つのオブジェクトから一つの属性(全体キー-値ペア)を完全に削除することができます.このような削除はオブジェクトの直接的な属性に影響します.
4.特殊な属性キー
保持文字は変数名として使用できませんが、属性のキーとして使用できます.
対象の文字の量では、属性のキーとして数字を使用できますが、文字列として解析されます.
もちろん、キーとして任意の文字列を使ってもいいですが、引用符を付けなければなりません.
関数を呼び出すと、thisは常にパラメータとして使用されます.
1.ゆったりモードの普通関数
通常の関数ではthisは実用的ではないが、特殊な変数として存在し、その値は常にグローバルオブジェクトを指す.
2.厳格モードの一般関数
thisはいつもundefinedです.
3.方法
thisはいつも呼び出し方法の対象を指します.
(3)関数の呼び出し時にthis:call()、appy()、bind()を設定します.
関数もオブジェクトです.だから、関数ごとに自分の方法があります.
①Funtion.prototype.call(thisValue,arg 1?,arg 2?…)
最初のパラメータは、呼び出された関数内のthisに値を割り当てます.残りのパラメータはパラメータとして変調関数に入力される.
②Funtion.prototype.appy(thisValue,argAray)
最初のパラメータは調整された関数内のthisに値を与えます.第二のパラメータは、コールされた関数のパラメータを提供する配列です.
③Function.prototype.bind(thisValue、arg 1?、…、argN?)
この方法は偏関数応用を示しています.新しい関数を作成し、次のようにbind()の受信者を呼び出します.thisの値はthis Valueで、パラメータはarg 1からargNまで、その後に続く新しい関数のパラメータです.つまり、元の関数を呼び出すと、新しい関数がそのパラメータをarg 1,…argNの後ろに追加します.例を見てみます
転載先:https://www.cnblogs.com/luohaoran/p/5981657.html
第1層:単一オブジェクトのオブジェクト指向
第2層:対象間のプロトタイプチェーン
第3層:実例工場の構造関数として、他の言語のクラスと類似しています.
第4層:サブクラス、既存のコンストラクタを継承することにより、新しいコンストラクタを作成します.
すべての層は前の階に依存しています.順を追って勉強することができます.JavaScript OOP.第1層と第2層は基本的なコアを構成しており、より複雑な第3層と第4層に困惑した場合は、常に前2層を振り返ることができる.
(1)第1層:単一オブジェクト
大まかに言えば、JavaScriptのすべてのオブジェクトは文字列から値へのマッピングです.オブジェクトの一つ(キー、値)が属性となります.属性のキー(key)は常にテキスト文字列です.属性の値は、関数を含む任意のJavaScript値とすることができます.方法は、値が関数の属性です.
1.属性の種類
属性は3種類に分けられます.
①属性(property):オブジェクト中の通常の属性(つまり文字列のキーからマッピングに値する)を含む方法(method)をデータ属性と呼びます.これはこれまでで最も一般的な属性のタイプです.
②アクセス器(Access or):アクセス器は、読み書き属性に似た特殊な方法です.属性の値は通常の属性に格納され、アクセス器は属性の値を計算することができる.それらを仮想的な属性と見なすことができます.
③内蔵属性(Internal property):ECMAScript言語仕様にのみ存在します.彼らはJavaScriptで直接訪問することはできませんが、間接的に訪問できるかもしれません.属性を内蔵するキーをかっこにセットするのを規範化します.例えば、オブジェクトのプロトタイプを持ち、Object.get ProttypeOf()を介してアクセスすることができます.
2.対象文字数
JavaScriptのオブジェクトの字面量は、直接に簡単なオブジェクト(Objectの直接例)を作成することができます.以下は例です.
var jane = {
name : 'jane',
describe : function () {
return 'Person named ' + this.name;
}
};
方法では、現在のオブジェクト(方法コールの受け入れ者とも呼ばれる)を指すために、thisを使用する.3.ポイント演算子(.):固定キーで属性にアクセスする
ポイント演算子は、簡潔な構文アクセス属性を提供する.任意の名前や読み書き属性を使いたい場合は、中かっこ操作符([]を使用します.
属性を取得:
jane.name;
存在しない属性を取得するとundefinedに戻ります.取得方法:
jane.describe();
属性を設定:jane.first_name = 'Tom';
注:属性が存在しない場合、自動的に属性を作成します.この属性があると、その値が変わります.属性を削除:
delete操作によって、一つのオブジェクトから一つの属性(全体キー-値ペア)を完全に削除することができます.このような削除はオブジェクトの直接的な属性に影響します.
4.特殊な属性キー
保持文字は変数名として使用できませんが、属性のキーとして使用できます.
対象の文字の量では、属性のキーとして数字を使用できますが、文字列として解析されます.
もちろん、キーとして任意の文字列を使ってもいいですが、引用符を付けなければなりません.
var obj = {
'I am Luo' : 'haoran'
};
(2)関数と方法の隠蔽パラメータとしてthis関数を呼び出すと、thisは常にパラメータとして使用されます.
1.ゆったりモードの普通関数
通常の関数ではthisは実用的ではないが、特殊な変数として存在し、その値は常にグローバルオブジェクトを指す.
2.厳格モードの一般関数
thisはいつもundefinedです.
3.方法
thisはいつも呼び出し方法の対象を指します.
(3)関数の呼び出し時にthis:call()、appy()、bind()を設定します.
関数もオブジェクトです.だから、関数ごとに自分の方法があります.
①Funtion.prototype.call(thisValue,arg 1?,arg 2?…)
最初のパラメータは、呼び出された関数内のthisに値を割り当てます.残りのパラメータはパラメータとして変調関数に入力される.
②Funtion.prototype.appy(thisValue,argAray)
最初のパラメータは調整された関数内のthisに値を与えます.第二のパラメータは、コールされた関数のパラメータを提供する配列です.
③Function.prototype.bind(thisValue、arg 1?、…、argN?)
この方法は偏関数応用を示しています.新しい関数を作成し、次のようにbind()の受信者を呼び出します.thisの値はthis Valueで、パラメータはarg 1からargNまで、その後に続く新しい関数のパラメータです.つまり、元の関数を呼び出すと、新しい関数がそのパラメータをarg 1,…argNの後ろに追加します.例を見てみます
function func() {
console.log('this: ' + this);
console.log('arguments: ' + Array.prototype.slice.call(arguments));
}
var bound = func.bind('abc',1,2);
bound(4);
// this: abc
// arguments: 1,2,4
これらの意味の具体的な使い方について.これから使えるようになりました.転載先:https://www.cnblogs.com/luohaoran/p/5981657.html