简介:不少概念不清或忘记,从新构建本身的知识体系。天天问本身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()
方法返回一个布尔值,表示指定的属性是否可枚举