ホームページ > ウェブフロントエンド > jsチュートリアル > JS Advanced Notes_JavaScript スキル

JS Advanced Notes_JavaScript スキル

WBOY
リリース: 2016-05-16 18:04:36
オリジナル
1102 人が閲覧しました

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 と同等です。 C# では
長さは読み書きする
配列の長さ属性を任意に変更できます (これを使用して配列要素を削除できます)
配列のスタック メソッドは後入れ先出しです
push() それに追加します
pop() スタックヘッドから取り出します、取り出した後に配列の要素数が変わります
配列のキューメソッドは先入れ先出しです
shift() キューの末尾から取り出します
unshift() キューの末尾から追加します
Sort
sort() 配列内のデータを特定の順序で並べます。匿名メソッドに渡すことができます (インターフェイスに似ています)
reverse() 配置を逆にします
配列を接続します
concat() 例: var color=["a","b"];var newcolor=colors.concat(" yellow",["c","d"]); 結果として、色には 5 つの要素があります。配列が concate メソッドに渡される場合、配列は分割され、要素がターゲット配列に追加されます。 json 形式のデータを渡すと、json データは要素として扱われ、配列に追加されます。
3) 関数の種類。関数はオブジェクトであり、関数名はポインターです。
宣言メソッド (3 つの方法):
function sum(x,y){return x y;}
var sum=function(x,y) ){return x y;} //関数式
var sum=new Function("x","y","re​​turn x y;");//オブジェクトの作成、推奨されません (2 回解析されます)
関数の種類過負荷はありません。 Function 型は、他の型と同様に、複数回割り当てられると、前の割り当てを上書き (置き換え) します。同じ名前の複数の関数は、実際には同じ関数オブジェクトに値を割り当てます。後者の割り当ては前の割り当てを上書きするため、最後の関数定義が実行されます。
Function のプロパティについて説明する前に、JS コードの実行環境とスコープ、およびその他の知識ポイントを理解する必要があります。
a) 実行環境: 現在の関数 (メソッド)が見つかります。たとえば、window の下で実行される関数の実行環境は window です。実際のグローバル実行環境はグローバルですが、ほとんどのブラウザはコード アクセスを公開せず、ウィンドウを通じて間接的にアクセスするだけです。
b) if などのステートメントはブロック スコープを使用しません。JS のスコープは C# のスコープとは異なります。if や for などの中括弧で囲まれたコードはブロック スコープを形成できません。
c) var を使用して変数を宣言すると、その変数は最も近い使用可能な環境に追加されます。var が使用されない場合は、親環境に追加されます。これは、var を使用せずに定義された変数がグローバル変数である理由を説明します。 。
d) 宣言ステートメントは、どこに配置しても最初に実行されます。 JS コードは上から下に順番に実行されますが、宣言されたステートメントに遭遇すると、コンパイラは宣言されたステートメントを最初に実行し、他のステートメントの実行中に宣言されていない変数が見つかったためにエラーが報告されないようにします。
e) ガベージコレクション。オブジェクトを保持する変数を null に設定することは、変数 (スタック) と参照値 (ヒープ) の間の関係を切断することと同じであり、ガベージ コレクション ステーションは、
関数:
の内部属性を自動的にリサイクルします。引数
渡されたパラメータを保存する配列です。
callee は、この引数オブ​​ジェクトを所有する関数オブジェクトを保存するポインターです。これは、関数自体を呼び出す必要がある場合、独自の関数名を必要とせずに callee を使用できるため、関数の数が少なくなります。結合の度合い。
this
は、現在の関数の実行環境を指します。これは、関数が実行されるスコープです。
関数オブジェクトのプロパティとメソッド
長さ
名前付きパラメーターの数。関数で定義
関数名.length
prototype (プロトタイプ)
すべてのインスタンス メソッドの実際の場所を保存
apply([変更されるスコープ])
スコープの変更関数オブジェクトはこの値を変更します
サンプルコード

コードをコピー コードは次のとおりです:

関数 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) プロトタイプモード。各インスタンスにメソッドを保存しなくても、すべてのインスタンスがメソッドを呼び出せるように、プロトタイプにメソッドを保存します。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート