对象object

keys 查看一个元素的所有属性

var obj = {
  key1: 1,
  key2: 2
};

Object.keys(obj);
// ['key1', 'key2']

delete 删除元素中的属性

var obj = { p: 1 };
Object.keys(obj) // ["p"]

delete obj.p // true
obj.p // undefined
Object.keys(obj) // []

delete的结果返回false的情况:属性存在且无法被删除;其余情况返回true

对象的属性可以随时新增

var obj = { p: 1 };

// 等价于

var obj = {};
obj.p = 1;

in运算符:属性是否存在

var obj = { p: 1 };
'p' in obj // true
'toString' in obj // true

//hasOwnProperty判断是否为对象自身属性

var obj = {};
if ('toString' in obj) {
  console.log(obj.hasOwnProperty('toString')) // false
}

in 与 hasOwnProperty :
在JS中,由于几乎所有对象都是从 Object.prototype (Jscript中的顶级原型对象)继承的,而该对象定义了一些通用的方法,包括 'toString' ,
因此'toString' in obj 的结果为 true ,与 in 不同的是,hasOwnProperty判断是否为对象自身属性。

toString 将对象转换为字符型

for遍历

● 它遍历的是对象所有可遍历(enumerable)的属性,会跳过不可遍历的属性。
● 它不仅遍历对象自身的属性,还遍历继承的属性。(只遍历继承中可遍历的属性)

// 遍历一个对象的全部属性
var obj = {a: 1, b: 2, c: 3};

for (var i in obj) {
  console.log('键名:', i);
  console.log('键值:', obj[i]);
}
// 键名: a
// 键值: 1
// 键名: b
// 键值: 2
// 键名: c
// 键值: 3

with语句

// 例一:修改一个对象中的多个属性
var obj = {
  p1: 1,
  p2: 2,
};
with (obj) {
  p1 = 4;
  p2 = 5;
}
// 等同于
obj.p1 = 4;
obj.p2 = 5;

// 例二:输出一个对象的多个属性
with (document.links[0]){
  console.log(href);
  console.log(title);
  console.log(style);
}
// 等同于
console.log(document.links[0].href);
console.log(document.links[0].title);
console.log(document.links[0].style);

Last updated