ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript に関する共通知識の例を共有する
オブジェクト
オブジェクトは 2 つの形式で定義できます: 宣言形式と構築形式
宣言形式の構文: var myObj = {key:value}
構築形式の構文: var myObj = new Object(); myObj.key = value;
タイプ: 6 つの言語タイプがあります : 文字列番号 boolean null 未定義オブジェクト
組み込みオブジェクト: String Number Boolean Object Function Array Date RegExpエラー
var myObject = {
a:2
}
myObject.a; //2 プロパティアクセス
myObject["a"] // 2 キーアクセス
ES 6 計算可能なプロパティ Name
var prefix = "foo";
var myObject = {
[prefix + "bar"] : "hello",
[prefix + "baz"]: "world"
};
myObject["foobar"]; // hello
myObject["foobaz"]; // world
1.writable プロパティの値を変更できるかどうかを決定します
var myObject = {};
Object.defineProperty( myObject,"a",{
value:2,
writable:false, // 書き込み不可!
configurable: true,
enumerable: true
});
myObject.a = 3;
myObject.a; // 2
2.configurable
プロパティが構成可能である限り、defineProperty(..) メソッドを使用して変更できます。説明プロパティ。
var myObject = {
a : 2
};
myObject.a = 3;
myObject.a // 3
Object.defineProperty(myObject,"a",{
value; : 4,
writable:true,
configurable:false,// 構成不可
enumerable: ture
});
myObject.a; // 4
; myObject.a = 5;
myObject.a; // 5
Object.defineProperty(myObject,"a",{
value: 6,
writable:true,
configurable:true,
enumerable: ture
}) // TypeError
configurable はflashに変更されました は一方向であり、元に戻すことはできません
deleteは、オブジェクトの削除可能な属性を削除するためにのみ使用されます。
varmyobject = {
a:2
};可能 属性がオブジェクトの属性列挙に表示されるかどうかを制御します。
1.オブジェクト定数、writable: false およびconfigurable: false と組み合わせると、真の定数プロパティ
を作成できます(変更、再定義、削除はできません)。
var myObject = {};
Object.defineProperty(myObject,"FAVORITE_NUMBER",{
値: 42,
書き込み可能: false,
構成可能: false
})
2.拡張の禁止
オブジェクトによる新しい属性の追加と既存の属性の保持を禁止するには、Object.preventExtensions(...)
var myObject = {
a:2
}; を使用できます。 "
保存されたオブジェクト
"
、このメソッドは実際に既存のオブジェクトに対して
Object.preventExtensions(...) を呼び出し、すべてのプロパティを
configurable:false.4 としてマークします。 Object.freeze(...) このメソッドは実際に既存のオブジェクトに対して Object.seal(...) を呼び出します オブジェクトをディープフリーズすることもできます。
GetterとSetter
var myObject = {
//getterを定義する
get a() {
return 2;} }
myObject.a = 3;myObject.a; // 2のgetter、のみが定義されているため、
aの値を設定するときはset の操作代入操作は無視され、 エラーはスローされません。 一般に、getter
とsetterはペアで表示されますvar myObject = {// define a getter for a ゲット( ) {
return this._a_;},// aのセッターを定義する
set a(val) {this._a_ = val * 2; } };
myObject.a = 2;myObject.a // 2存在
;
属性にアクセスせずに、この属性がオブジェクトに存在するかどうかを判断できます。 / true
("b" in myObject); // falsemyObject.hasOwnProperty("b"); // falsein operatorプロパティがオブジェクトと [[Prototype]]
プロトタイプ チェーンにあるかどうか。
hasOwnProperty(...)は、プロパティが
myObject
オブジェクト内にあるかどうかのみをチェックします。
プロパティが列挙可能かどうかを判断します: var myObject = {};Object.defineProperty(
myObject,"a",// a
にしておきますのように通常のプロパティ enumerable と同じ{enumerable: true,value:2}
);
Object.defineProperty(
myObject,
"b",
// b を列挙できないようにする
{enumerable: false,value:3}
)
myObject.propertyIsEnumberable("a"); // true
myObject.propertyIsEnumber("b"); // false
Object.keys(myObject) ); // ["a"]
Object.getOwnPropertyName(myObject); // ["a","b"]propertyIsEnumerable(...) は、指定されたプロパティ名がオブジェクト内に直接存在するかどうかを確認します。 (プロトタイプチェーンではなく) enumerable:true
Object.keys(...) を満たします。
すべての列挙可能なプロパティを含む配列を返しますObject.getOwnPropertyNames(...)
配列を返します列挙可能かどうかに関係なく、すべてのプロパティが含まれます Traversingfor .. in オブジェクトの列挙可能なプロパティ リストを反復処理するために使用できます
数値インデックス付き配列の場合は、標準for
loopES5
新しく追加されたforEach(..) Every(...) some(..)forEach(...)
は配列のすべての値を走査し、コールバック関数の戻り値。every(...)
はコールバック関数が返されるまで実行されますfalsesome(...)
はコールバック関数が返されるまで実行されますtrueEs6
forを増やします。の
ループ構文var myArray = [1,2,3]; for(var v of myArray){
console.log(v) }
通常のオブジェクトにはありません@ @iterator,走査したいオブジェクトをカスタマイズできますvar myObject = { a:2,
b:3
};
Object.defineProperty(myObject,Symbol.iterator,{
列挙可能: false,
書き込み可能: false,構成可能: true,値: function() {
var o = this;
var idx = 0;
var ks = Object.keys(o);
return {
next: function(){
value: o[ks[idx++]],
done:(idx > ks.length)
}
}
}
})
// 手動トラバーサルmyObject
var it = myObject[Symbol.iterator]();
it.next(); // {value:; 2, done: false}
it.next(); // {value: 3, done: false}
it.next(); unknown, done: true}
// Use for..of を走査してmyObject
for(var v of myObject){
console.log(v)
} // 2 // 3
以上がJavaScript に関する共通知識の例を共有するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。