オブジェクト指向(JS)

1.の対象は何である
オブジェクトのコレクションは、子どもの障害の鍵となります。

JavaScriptオブジェクト内のすべて。
任意のオブジェクトは、独自のプロパティとメソッドを持っています。
すべてのオブジェクトは、新しい可能な
オブジェクトのインスタンスを導出するキーワードと呼ばれているすべての新しいオブジェクトを通して。
STR新しい新しいString = VAR( "ABCDE");
VARのNUM1 =数新新( "123")

物体2の作成方法
1.リテラル
2.Newオブジェクトを()
3.カスタムコンストラクタ
4.Object.create()es2015新しい方法
5工場機能

3工場の機能:質量オブジェクト
栗を:createStudent関数(名前、年齢、クラス名){
VAR OBJ =新しい新しいオブジェクト();
obj.name =名;
obj.age =年齢;
obj.className =クラス名;
obj.study関数= (){
にconsole.logは( "CSSの学習")
}
OBJを返します;
}

メリット:直接呼び出しは、オブジェクトのcreateStudentを生成することができます()
の欠点工場機能:各コールファクトリ関数は、メモリ内のスペースを開いている
メモリの無駄で、その結果、すべての機能が同様に再生しました。

4.自己定義コンストラクタの起源
ファクトリ関数は、メモリの廃棄物問題を解決するために、カスタムコンストラクタがあり、廃棄物のメモリの問題があります。

5.カスタムコンストラクタ:オブジェクト上の質量作用
指定:大文字
関数犬(名前、年齢、色){
this.name =名;
this.age =年齢;
this.color =カラー;
this.say関数= (){
はconsole.log( "こんにちは")
}
}
VAR = damao新しい新しい犬( "OVO"、12で、 "Yelow")
新しい新しいカスタムコンストラクタ
メモリに何が起こったのか?
1.オープンスペースは、メモリ内の新しいオブジェクトを作成します。これは、このオブジェクトを指します。
2.コンストラクタのすべてのプロパティとメソッドを、新しいオブジェクトのすべてのコピーするための
新しいプロトタイプオブジェクトは、すべての継承に似3.各コンストラクタ関数は、プロトタイプオブジェクトを持つ
属性とメソッドを。


カスタムコンストラクタは、利点は、それがメモリ内のスペースを開き、オブジェクトを作成するたびに避けることである
同じ関数を生成します。メモリを保存します。


6.ビルトインまた、一般的に構築されたコンストラクタ関数内で使用するオブジェクト
ナンバー文字列、ブール
配列のRegExp数学日付
関数オブジェクトは、
エラーフリーに参加

オブジェクト指向は何7.
オブジェクト指向は、思考、問題解決がオブジェクトに焦点を当てることです。

パッケージの継承多型:オブジェクト指向三個の特性を有する
パッケージ:パッケージ・オブジェクトに関連付けられているすべてのプロパティとメソッドを。
継承:私はそれらの誰か他の人の使用に、何のプロパティやメソッドを所有していません。
多型:事件の状況に応じて異なるオブジェクト、異なるコードが実行されます。
jsがそれをシミュレートすることができます。引数を指定します。
8.プロトタイプオブジェクト
プロトタイプオブジェクトのコンストラクタ関数で記述された同じプロパティおよび方法に関する。
アクセス可能なすべての新しいインスタンスのうちオブジェクトコンストラクタの例。
プロトタイプオブジェクトの存在の最大の効果は、メモリ空間を節約することである
9プロトタイプ鎖
***プロトタイプチェーン:すべてのレベルで__proto__継承されたフォームオブジェクトによってステップによって関係ステップ

プロトタイプチェーンの役割もスペースを節約しました。
実装:
1継承オブジェクトコンストラクタ、作成次いで、ベースオブジェクトのコンストラクタを確立するために
プロトタイプで2オブジェクトの継承。



原型継承
10.アナログ継承呼び出しがバインド適用
アナログ継承が実際に機能を実行し、この変更の実装は、オブジェクトコンストラクタの現在のインスタンスとなっている
メモリ容量を節約しません。
栗は
人を機能(名前、年齢){
this.name =名;
this.age =年齢;

}
Person.prototype = {
発言:機能(){
はconsole.log( "こんにちは、私は" + this.name)
}
}

関数学生(名前、年齢、studyObj){
アナログ連続
Person.apply(この引数)は、
対応
this.nameを=名;
this.age =年齢;
}

11.完全なプロトタイプチェーン検証
__proto__の//人のプロトタイプオブジェクト
(Person.prototype .__ proto__ ===のObject.prototype)にconsole.log

//コンストラクタ関数者は、オブジェクトのインスタンスで
はconsole.log(人物.__ proto__ === Function.prototype)

//コンストラクタ関数オブジェクトのプロトタイプオブジェクトは、オブジェクトのインスタンスで
はconsole.log(Function.prototype .__ proto__ ===のObject.prototype)

//は、Functionコンストラクタのインスタンスオブジェクト。
console.log(オブジェクト.__ proto__ === Function.prototype)

//コンストラクタ関数は、オブジェクトの独自のインスタンスで
はconsole.log(機能.__ proto__ === Function.prototype)

//は、断片
はconsole.log(のObject.prototype .__ proto__ === NULL)
//任意のオブジェクトは、オブジェクトのインスタンスである
VAR = {O}
はconsole.log(O .__ proto__ ===のObject.prototype)
//任意の関数を関数オブジェクトの例は、
VaRのF =関数(){}
はconsole.log(F .__ proto__ === Function.prototype)

12古典的な継承
Object.create()
VAR = xiaohei Object.create(CAT)
xiaoheiプロトタイプオブジェクトをCATである
(xiaohei .__ proto__ == CAT)はconsole.log
VAR = duolaBmeng Object.create(CAT、{
名前:{値: "ドラBの夢"}、
食べる:{値:関数は、(){
にconsole.logは( "私はジャイロ火傷を好き")
}}
})
13は、継承された、混合
関数は、{(OBJ1、OBJ2)を拡張
(VAR kのOBJ2に){
OBJ1 [K] = OBJ2 [K]
}
}

14.組み込みオブジェクト(コンストラクタ)拡張方法。
(!Object.prototype.extend)IF {
Object.prototype.extend =関数(OBJ2){
ため(OBJ2でのvar K){
この[K] = OBJ2 [K];
}
}
}
ただし、衝突を回避するために、内蔵のオブジェクト(コンストラクタ)拡張メソッドの使用を最小限に抑えます。
ですから、競合を避けるために、企業内のいくつかの良い議論をチームを拡張する必要がある場合


拡張メソッドに構成内蔵15文字列配列

 

 

 

おすすめ

転載: www.cnblogs.com/yryx/p/11361846.html