jsオブジェクト指向初日

1: オブジェクト指向

1) オブジェクト指向?

オブジェクト指向はプログラミングの考え方です。

クラス: 同じ特性を持つもののクラス。js には多くの組み込みクラスがあり、自分でクラスを作成することもできます

オブジェクト: 特定のクラスを通じてオブジェクトを作成します。js には多くのオブジェクトがあり、自分でオブジェクトを作成することもできます

2) クラスは?

js には、数値 String、Boolean、Object、Math、Date など、多くのクラスが提供されています。

var a=new Array() などの作成する new 演算子を使用して、クラスを通じてオブジェクトを作成します。

新しいクラスはオブジェクトを作成できます

3) オブジェクト?

オブジェクトには多くの静的な特徴があり、それらは通常変数によって記述され、現時点では変数は属性とも呼ばれます。

オブジェクトには多くの動的な機能があり、それらは通常、メソッド (属性) とも呼ばれる関数によって記述されます。

オブジェクトは、順序付けされていないプロパティのコレクション (操作のコレクション (CRUD)) です。

4) 3 つの法律、2 つのチェーン?

法則 1: すべてはオブジェクトである

法則 2: すべてのオブジェクトはクラスを通じて作成される

法則 3: オブジェクトは順序付けされていないプロパティのコレクションである

2 つのチェーン: スコープ チェーン、プロトタイプ チェーン

2: オブジェクトに対するいくつかの操作

1) オブジェクト内のプロパティにアクセスする

ドット構文: オブジェクト名.プロパティ名

角括弧の形式: オブジェクト名 []。角括弧内に引用符を追加する必要があります。

2) 属性を追加する

ドット構文: オブジェクト名.属性名 = 属性値

角括弧の形式: オブジェクト名 [] = 属性値。角括弧内に引用符を追加する必要があります。

注: 同名の属性を追加すると、同名の属性は上書きされます。

オブジェクトのプロパティを設定する(オブジェクトのプロパティを細かく設定する)

各オブジェクトのプロパティにはいくつかの特徴があります。

構成可能: 削除できるかどうか、デフォルトは true、削除可能

writable: 属性値を変更できるかどうか。デフォルトは ture で、変更可能です。

enumerable: 列挙可能かどうか、デフォルトは ture であり、列挙可能

value: 属性値を示します。属性値が指定されていない場合、属性値は未定義です。

オブジェクトのプロパティを設定する(オブジェクトのプロパティを細かく設定する)

Object.defineProperty(オブジェクト名, "プロパティ名", {構成テーブル})

Object.defineProperty() メソッドは、オブジェクトの新しいプロパティを直接定義するか、オブジェクトの既存のプロパティを変更して、このオブジェクトを返します。

オブジェクトはクラス class.xxx は xxx がクラスの属性 (静的属性) であることを示します

defineProperty は Object クラスの静的プロパティで、define は定義の意味です。

注: 属性値と属性特性を変更する場合: この属性が存在しない場合は、新しい属性が追加され、細かく設定されていることを意味します

属性の削除: 属性名を直接削除します。注: var を追加した場合は削除できませんが、var を追加しなかった場合は削除できます (winmdow オブジェクト)

オブジェクトのプロパティを反復処理します。

   オブジェクトのプロパティは、次の 2 つの方法で調べることができます。

のために  

for(オブジェクト名の項目){console.log(項目)}

Object.keys()

console.log(wc[項目])

プロパティがオブジェクトに属しているかどうかを確認する

in と hasOwnProperty の違い:

hasOwnProperty: このメソッドは、オブジェクトの独自のプロパティに指定されたプロパティがあるかどうか (つまり、指定されたキーが存在するかどうか) を示すブール値を返します。

属性がオブジェクトに属しているかどうかを判断するために

違い:

hasOwnProperty: (独自のプロトタイプでのみ見つかります)

in は最初にそれ自体の内部でそれを探します。見つからない場合は、そのプロトタイプ オブジェクトでそれを探します。

3. 関数をクラスとして使用する

オブジェクトを作成する目的で、関数をクラス (コンストラクター) として扱います。

関数には 2 つの役割があります: 通常の関数: 実行コンテキスト。クラス: (コンストラクター、コンストラクター): 新しい

関数をクラスとして扱うことと通常のオブジェクトとして扱うことの違いは何ですか?

new はコードの実行時にオブジェクトを作成し、this がこのオブジェクトを指すようにします。

最後にオブジェクトのアドレスを返します

注: 通常、クラス名の最初の文字は大文字になります。

練習に来て、自分で書いてください

function Creatパーソン(名前,年齢){

this.name=名前;

this.age=年齢;

this.eat=function(){

console.log("食べる...")

}

}

var person=new Creatperson("Zhang",18);

console.log(人名);

console.log(人.年齢);

person.eat();

4.instanceofとtypeofの違い

typeof: 基本データ型の判定に使用されており、参照データ型の判定は精度が低い

instanceof: 基本データ型ではなく、参照データ型を判定するために使用されます。

4. JSON オブジェクトの検証 JSON は合法です: http://www.bejson.com/

JSON: JavaScript オブジェクト記法 JS オブジェクト記法

 JSON は特別な JS オブジェクトであり、軽量のデータ交換形式です。

インターネットの性質:

クライアント: 携帯電話、QQ、ブラウザ...

 サーバー: コンピューター

 インターネット アクセスは、クライアントがサーバーに要求し、サーバーが必要なデータを返すプロセスです。

クライアントとサーバーの間ではデータ通信が必ず必要です。

 JSON は、クライアントとサーバー間の通信用のデータ形式です。

JSON は通常、次の 2 つの方法で記述されます。

配列の形式: [{},{},{}]

オブジェクトの形式: {}

 JSON データの構文:

 1、キー値で構成される

2. キーと値のペアをカンマで区切ります。

3、{} put オブジェクト [] put 配列

 4. キーも二重引用符で囲む必要があります。

 5. 値には数値、文字列、ブール値、配列、オブジェクト、null を使用できますが、関数は使用できません

JSON は通常 2 つの方法で記述されます。JSON の値を関数にすることはできないことに注意してください。

配列の形式: [{}, {}, {}]、オブジェクトです

JSON の 2 つの形式

JSON には 2 つの形式があります。

それ自体は一重引用符で囲まれた文字列です。

var str='[{"id":1,"name":"z3","age":4,"score":"10"}]'

JSONオブジェクト

特別な JS オブジェクトを比較する

var obj=[{"id":1,"名前":"z3","年齢":4,"スコア":"10"}]

JSON オブジェクトは stringify を使用して JSON 文字列に変換されます。

 let str=window.JSON.stringify(obj);

JSON 文字列は、解析によって JSON オブジェクトに変換されます。

let obj=window.JSON.parse(str);

JSON オブジェクトの変更:

1) 訪問

console.log(Stu[0]);//配列の最初の要素にアクセスします

console.log(Stu[0].name) //配列の最初の要素にあるオブジェクトの最初の属性値にアクセスします

console.log(Stu[0]["name"]) //配列の最初の要素にあるオブジェクトの最初の属性値にアクセスします

2) 変更

Stu[0].score="100";

console.log(Stu[0])

3) 削除

This[0].score を削除します。

console.log(Stu[0])

4) トラバース

//まず for または for each を使用して配列を走査し、次に for in を使用して内部オブジェクトを走査します。

for(var i=0;i<Stu.length;i++){

//このステップは内部のすべての配列オブジェクトを走査できます

for(Stu[i] の var item){

console.log(アイテム+"====="+Stu[i][アイテム])

}

}

 

 

 

 

 

おすすめ

転載: blog.csdn.net/zwy1231/article/details/103462550