《JavaScript 秘密花园》
恰巧今天是传统民间重要的节日之一——七夕节:
被大家挂在嘴上最多的一句话便是:有对象了吗?这不……
这样的话,那咱就先给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/
还有这个(-_-祝愿大家开开心心的~)
作者:郑叶叶
出处:http://www.cnblogs.com/zhengyeye
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。