簡介:不少概念不清或忘記,從新構建本身的知識體系。天天問本身1~多個問題。我是菜鳥 成爲大神之路!
數組
function Person() {
this.name = "KXY";
}
Person.prototype = {
constructor: Person,
job: "student"
};
var kxy = new Person();
Object.defineProperty(kxy, "achievement", {//概念在第二問
value: "The first prize",
enumerable: true
});
Object.defineProperty(kxy, "sex", {
value: "female",
enumerable: false
});
複製代碼
for...in
遍歷對象的每個可枚舉屬性,包括原型鏈上面的可枚舉屬性ui
for(var pro in kxy) {
console.log("kxy." + pro + " = " + kxy[pro]);
}
複製代碼
Object.keys()
方法會返回一個由一個給定對象的自身可枚舉屬性組成的數組,數組中屬性名的排列順序和使用 for...in
循環遍歷該對象時返回的順序一致,且只是遍歷自身的可枚舉屬性,不能夠遍歷原型鏈上的可枚舉屬性this
console.log(Object.keys(kxy));
複製代碼
Object.getOwnPropertyNames()
則是遍歷自身全部屬性(不管是否是可枚舉的)spa
console.log(Object.getOwnPropertyNames(kxy));
複製代碼
JSON.stringify()
方法轉換,只能取到可枚舉屬性prototype
console.log(JSON.stringify(kxy));
複製代碼
①-④打印結果 3d
Object.entries()
方法 補充內容2018年12月22日20:32:39
返回一個給定對象自身可枚舉屬性的鍵值對數組,其排列與使用 for...in
循環遍歷該對象時返回的順序一致(區別在於 for-in
循環也枚舉原型鏈中的屬性)。code
console.log(Object.entries(kxy));
複製代碼
Reflect.ownKeys()
補充內容2019年1月14日09:11:47
返回一個由目標對象自身的屬性鍵組成的數組。則是遍歷自身全部屬性(不管是否是可枚舉的)
返回值等同於Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols(target))
。cdn
var sym = Symbol.for("comet");
var sym2 = Symbol.for("meteor");
var obj = {[sym]: 0, "str": 0, "773": 0, "0": 0,
[sym2]: 0, "-1": 0, "8": 0, "second str": 0};
Reflect.ownKeys(obj);
// [ "0", "8", "773", "str", "-1", "second str", Symbol(comet), Symbol(meteor) ]
複製代碼
屬性的enumerable值決定,若是一個屬性的enumerable爲false,下面三個操做不會取到該屬性。對象
for..in循環
Object.keys方法
JSON.stringify方法
例子blog
function Person() {
this.name = "KXY";
}
Person.prototype = {
constructor: Person,
job: "student"
};
var kxy = new Person();
Object.defineProperty(kxy, "sex", {
value: "female",
enumerable: false
});
複製代碼
其中用defineProperty
爲對象定義了一個名爲'sex'
的不可枚舉屬性
function Person() {
this.name = "KXY";
}
Person.prototype = {
constructor: Person,
job: "student"
};
var kxy = new Person();
複製代碼
① hasOwnProperty()
方法會返回一個布爾值,指示對象自身屬性中是否具備指定的屬性
kxy.hasOwnProperty('name'); // 返回 true
kxy.hasOwnProperty('job'); // 返回 false
kxy.hasOwnProperty('constructor'); // 返回 false
複製代碼
② in
運算符判斷不管是自身屬性,仍是原形鏈上的繼承屬性,都能檢測到返回true >>link
'name' in kxy;// 返回 true
'job' in kxy;// 返回 true
'constructor' in kxy;// 返回 true
複製代碼
propertyIsEnumerable()
方法返回一個布爾值,表示指定的屬性是否可枚舉