JavaScriptモード(三)
3423 ワード
JS字面量と構造関数
1.全体説明構造関数の使用をできるだけ避ける. 必要に応じてオブジェクトを作成し、字面量 を選択するのに最適です.
2.字面量文法対象包装は大括弧の中で です.属性と方法は、名前と値によってカンマで区別されます.【注意:最後のカンマを付けないでください.IEは互換性がありません.】 名前と値をコロンで分割する 割当後、右大かっこの後に番号 があります.
フォーマットは以下の通りです JSにはクラスの概念がありません.関数を使ってクラスの用法を実現しただけです. は、
構造関数の本質: は、上記の実質によって説明され、構成関数では、thisの代わりに他のオブジェクト値を返すことができますが、オブジェクト値である必要があります.そうでなければ、this に戻ります.実際の状況では、thisは{}ではなく、他のプロトタイプから作成された です.構築関数がnewを使用せずに動作すると、内部のthisは大域変数を指し、結果は予想外の である.
4.安全な構造関数モード
new操作子の紛失を防止するための構造関数の誤用は、次のように構成関数を作成することができます.
配列は文字通りの量の構造と構造関数を使用しています.
配列の構造関数を使うと、次のような問題があります. typeofオペレータを使用して、Object に戻ります.は を使用できない.カスタム方法: JSONと字面量オブジェクトの違い:JSONはキー−値ペアであるが、キー名は文字列(引用符で包装する) でなければならない. JSONデータの解析と序文化
コンストラクタ生成:正規表現は意味を切り替える必要があります.読みにくいです. newオペレータを使用してもいいですか?
文字数の生成: 以前のバージョンでは、1つの字面量が作成された後、戻るオブジェクトは同じで、新しいバージョンは に変更されました.
8.エラーオブジェクト
内蔵されているエラーオブジェクトは、構造関数で作成できます. Err() SyntxError() Type Errer()内蔵オブジェクトは、以下の2つの属性があります. name:エラーの名前は、一般的に構造関数の名前 です.メッセージ:オブジェクト作成時に付随するメッセージ 【カスタムエラーオブジェクト】
任意のオブジェクトをスローすることで、カスタムオブジェクトを作成できます.
1.全体説明
2.字面量文法
フォーマットは以下の通りです
var objectName = {
propName: value,
methodName: function(){
//todo
}
};
3.構造関数の本質new Object(value)
のコンストラクタを使用しないでください.作成値の種類を動的に決定し、予期せぬ結果をもたらすことがあります.構造関数の本質:
var Constructor = function(value){
this.propName = value;
this.methodName = function(){
//todo
}
}
下記の過程に相当する(実際の状況ではない): var Constructor = function(value){
//
//var this = {};
//
this.propName = value;
this.methodName = function(){
//todo
}
//
//return this;
}
【説明】4.安全な構造関数モード
new操作子の紛失を防止するための構造関数の誤用は、次のように構成関数を作成することができます.
var Constructor = function(value){
// :
if(!this instanceof Constructor){
return new Constructor();
}
// :
if(!(this instanceof arguments.callee)){
return new arguments.callee();
}
this.propName = value;
this.methodName = function(){
//todo
}
}
5.配列の構造関数配列は文字通りの量の構造と構造関数を使用しています.
var arrayName = new Array(value1, value2, value3 ...);
に等しい var arrayName = [value1, value2, value3 ...];
【構造関数の問題】配列の構造関数を使うと、次のような問題があります.
// n
var arrayName = new Array(n);
//arrayName[k] undefined
【配列属性のチェック】Array.isArray()
方法を使用しているが、一部の環境では if(typeof Array.isArray === "undefined"){
Array.isArray = function(arg){
return Object.prototype.toString.call(arg) === "[object Array]";
}
}
6.JSONデータ //
var objectName = JSON.parse(jsonString);
//
var jsonString = JSON.stringify(objectName);
7.正規表現コンストラクタ生成:
var re = new RegExp(regexString,option);
//option: "g" "m" "i"
【説明】:文字数の生成:
var re = /regexString/option
//option: g m i ,
【説明】8.エラーオブジェクト
内蔵されているエラーオブジェクトは、構造関数で作成できます.
任意のオブジェクトをスローすることで、カスタムオブジェクトを作成できます.
try{
throw{
name:value,
message:value,
propName:value,
methodName:function
};
} catch(e){
//todo
}