ES6オブジェクト
ミニマルな表現オブジェクト
メインアプリケーションオブジェクトのプロパティとメソッドで
使用の際には、以下のルールを十分に把握、すなわち変数式は、変数の値に対応する名前、属性値を属性。
ここでは、変数は、あらかじめ、割り当てで宣言されています。
var hello = 'hello world'
const test = {hello}
console.log(test)
// {hello: "hello world"}
オブジェクト内の簡単な方法は、このようなアプローチは、それVUE一般的です!
const o = {
method() {
return "Hello!";
}
};
// 等同于
const o = {
method: function() {
return "Hello!";
}
};
利用シナリオ
関数の戻り値
function getPoint() {
const x = 1;
const y = 10;
return {x, y}; // 关键
}
getPoint()
// {x:1, y:10}
function processInput(input) {
return { left, right, top, bottom };
}
const { left, right } = processInput(input);
私たちは、多くの場合、これはcommonjsモジュールで書かれて参照してください。
let ms = {};
function getItem (key) {
return key in ms ? ms[key] : null;
}
function setItem (key, value) {
ms[key] = value;
}
function clear () {
ms = {};
}
module.exports = { getItem, setItem, clear }; // 关键
// 等同于
module.exports = {
getItem: getItem,
setItem: setItem,
clear: clear
};
module.exports
Vueの文言は、文言では一般的です。
列挙オブジェクトのプロパティとトラバーサル
enumberable
各オブジェクトは、この属性の動作を制御するために、プロパティ記述オブジェクト(記述子)を持っています。
let obj = { foo: 123 };
Object.getOwnPropertyDescriptor(obj, 'foo')
//{
// configurable: true
// enumerable: true
// value: 123
// writable: true
//}
列挙プロパティがfalseの場合、いくつかのAPI操作は、オブジェクトのプロパティを列挙プロパティは無視されますさ!4つの動作自体は属性列挙することができないオブジェクトを無視しますがあります。
for...in
ループ:のみトラバースオブジェクト自身と継承++ ++列挙プロパティを。Object.keys()
:すべてのプロパティのオブジェクト自身の列挙キー名を返し、継承され含まれていません。JSON.stringify()
:のみシリアライズされたオブジェクト自体可算プロパティ。Object.assign()
:列挙プロパティを無視することは、オブジェクト自身の列挙可能プロパティのコピーのみfalseです。
理解
興味深いことに、JSは列挙属性(設計されたenumberable
ほとんどの時間は、我々は唯一のオブジェクト自身のプロパティを気にしているため、開始点)は、特定のプロトタイプチェーンのプロパティまたはメソッドに継承することです、トラバースすることはできません。たとえば、配列を横断したり、任意のオブジェクトは、長さと頭の文字列や他の大きなチケットをプリントアウトしません。
関連API
Object.getOwnPropertyDescriptor(obj, 'foo')
:オブジェクト記述子オブジェクトを返します。o.propertyIsEnumerable('a');
:オブジェクトのプロパティを列挙可能ですObject.defineProperty(o, "a", {...属性描述符});
、オブジェクトのプロパティを定義するか、変更します。属性記述子がデフォルト値falseにブールを定義していることに留意されたいです!Object.getOwnPropertyNames(obj)
オブジェクト自体のすべてのプロパティを横断する、非列挙特性を含むキーの配列を返します。