JS の詳細
1. JS データ型
1. 基本型
JS には次の 5 つの基本型があります。
1) 未定義。値は 1 つだけ、未定義です。変数が定義されているが、値が割り当てられていない場合、システムはデフォルトでその変数に未定義の値を割り当てます。
2) 無効です。また、値は null だけです。これは参照型であり、オブジェクトを保存することを目的とした変数がさまざまな理由でオブジェクトを指していない場合、通常はその変数に null の値を割り当てることができます。
3) 数字。数値型は、C# における整数と浮動小数点型のコレクションです。その具体的な型は、一般的に、割り当てられる値の型です。また、var num = 1.0; このとき、num は整数型であり、小数点以下が 0 以外の正確な値がある場合にのみ浮動小数点型になることに注意してください。 Number 型に関するその他の知識ポイントは次のとおりです。 NaN は、値が数値ではないことを意味します。 isNaN() は、受信した値が Number 型であると判断できます。 parseInt() は、受信したパラメーターを数値型に変換できます。文字列が数値型以外の場合、その文字列は自動的に削除され、parseInt("123blue") の文字列の青い部分は無視されます。メソッドは、受信パラメータを整数型に変換しようとしていると理解できます。変換できない場合、変換できない部分は無視されます。 parseFloat() メソッドは parseInt() メソッドに似ています。
4) ブール値。 Boolean 型は、C# の bool 型と同様に、true と false の 2 つの値を持ちますが、C# では、0 が False に対応し、1 が true に対応するなど、数値との対応関係はありません。
5)文字列。 string型には、0~16ビットのUNICODEコードからなる文字列が格納されます。
2. 複合型
1) オブジェクト型。これは JS の最上位の「親クラス」です (JS にはクラスの概念がなく、理解を容易にするためのものであるため) これはデータとメソッド (関数) のコレクションですが、そうではありません。従来のオブジェクト指向言語をサポートするクラスとインターフェイスを備えています。オブジェクト型は、本質的には、コレクションに似た、json 形式のキーと値のペアの順序なしリストです。これには、次の 7 つのメソッドが含まれています。
constructor() Constructor?
hasOwnProperty(propertyName) プロパティが現在のオブジェクト内にあるかどうかを確認します。
isPrototypeOf(object) オブジェクトがオブジェクトのプロトタイプであるかどうかを確認します。
propertyIsEnumerable(propertyName) プロパティが for- を使用してループできるかどうかを確認します。 in
toString( )
valueOf()
オブジェクトを作成するには、次のような方法があります。
新しいキーワードによって: var s = new Object(); =27;
JS による単純な定義: var s = {};
オブジェクトのリテラル表記: var s = {"name":"james", " age":"27"};追記:json形式のデータのキーは、値が文字列でない場合はダブルクォーテーションで囲む必要はありません。不要なトラブルを避けるために、キーと値の両方を二重引用符で囲むことをお勧めします。
Object オブジェクトのプロパティにアクセスするメソッド:
s.name 直接クリックします。
s["name"]; 角括弧を使用する利点は (インデクサーと同様)、変数を通じてプロパティに動的にアクセスできることです。 ) 配列型。これはデータ
の順序付きリストです。これは他の配列とは異なります。
配列要素は任意の型にすることができ、同じ配列の要素型も異なる可能性があります。これは List
関数 sum( x, y) {
alert(this);
return x y;
//window.sum(1,2); ) {
callS.callSum1(1, 2);
}
callSum1 = function (x, y) {
alert(this); var s = sum.apply( this, argument);
//sum(1, 2);
return s;
call() メソッドも同様です上記の apply() メソッド
へ この 2 つのメソッドは継承されず、関数のスコープを拡張できます。これの最大の利点は、オブジェクトとメソッドが結合関係を持つ必要がないことです。両方によって渡される最初のパラメータは変更されるスコープであり、apply によって渡される 2 番目のパラメータはパラメータ配列であり、呼び出しでは各名前付きパラメータに渡されます。
2. 値の型と参照型
非常に多くの基本型 (null を除くすべての値型) と複合型 (基本的にすべての参照型) について説明しましたが、言語設計者が値の型と参照型を設計する理由を理解する必要があります。 。両者の違いは何ですか?
1. 値型のコンテンツ長は固定であり、参照型のコンテンツ長の格納範囲は固定ではなく、可変長のデータを格納できます。
2. 値型は次のような値のみを格納できます。整数と文字列は待ちます。参照型はオブジェクトのヒープ アドレスを格納できるため、複数の変数が同じオブジェクトを指すことができます。
3. 最も重要な点は、参照型によりスタックのストレージ プレッシャーが軽減されることです (値型はスタック)。
4. JS 構文では、基本データ型は属性を動的に追加できませんが、参照データ型は属性を動的に追加できます。
3. 型を検出するためのキーワード
1.typeof
基本型の型を判定し、true または false を返す
2.instanceof
複合(参照)型の型を判定し、true を返すまたは false
基本型を決定するために使用すると、常に false が返されます。
4. eval() メソッド
eval() メソッドは非常に強力で、パーサーと同等です。パラメータは 1 つだけ受け入れられ、それは実行される JS コード文字列です。パーサーは eval() を見つけると、eval() 内のパラメータを解析し、eval が実行される場所に挿入します。その効果は、対応する場所に JS コードを直接記述することと同じです。
5. オブジェクトの作成
1) 単純なファクトリ パターン
2) コンストラクター パターン。各インスタンスにはすべてのメソッドが含まれているため、メモリが無駄に消費されます。
3) プロトタイプモード。各インスタンスにメソッドを保存しなくても、すべてのインスタンスがメソッドを呼び出せるように、プロトタイプにメソッドを保存します。