恰巧今天是传统民间重要的节日之一——七夕节:
被大家挂在嘴上最多的一句话便是:有对象了吗?这不……
这样的话,那咱就先给new出一个对象吧:
var boyfriend = new Object();
然后再往其中增加属性,比如:他的名字叫Jay;
1.对象:①增加属性
boyfriend['name']='Jay';
②访问属性(两种方式:点操作符或者中括号操作符)
boyfriend.name;//"Jay"
boyfriend[name];//"Jay"
③删除属性:
delete操作符,但是:设置属性为 undefined
或者 null
并不能真正的删除属性, 而仅仅是移除了属性和值的关联。
var boyfriend = {
nose: 1,
hands: 2,
eyes:2
};
boyfriend.nose = undefined;
boyfriend.hands = null;
delete boyfriend.eyes;for(var i in boyfriend) {
if (boyfriend.hasOwnProperty(i)) {
console.log(i, '' + boyfriend[i]);
}
}
// nose undefined
// hands null
只有eyes属性被真正删除了;
④当检查对象上某个属性是否存在时,hasOwnProperty
是唯一可用的方法。 同时在使用for in loop遍历对象时,推荐总是使用 hasOwnProperty
方法, 这将会避免原型对象扩展带来的干扰。
⑤for in 循环
查找对象属性时遍历原型链上的所有属性;
Object.prototype.eyes = 2;var boyfriend = {hands:2};
for(var i in boyfriend ) {
console.log(i);
}
//输出两个属性:hands eyes
对象使用for-in循环,数组使用经典的for循环。
for in循环会枚举原型链上所有属性,唯一过滤这些属性的方式是使用 hasOwnProperty 函数, 因此会比普通的 for
循环慢上好多倍。
注意:虽然
length
是数组的一个属性,但是在每次循环中访问它还是有性能开销。故:实际上,不使用缓存数组长度的方式比缓存版本要慢很多。因此建议使用时缓存数组长度。
最后附上阅读链接:http://bonsaiden.github.io/JavaScript-Garden/zh/
还有这个(-_-祝愿大家开开心心的~)