javascript 对象属性的设置、查询、枚举、删除
前一篇简单介绍了一下javascript对象的创建方法,那么现在我们就来让对象变的有血有肉,给之增添属性。
这篇涉及如下几方面内容,一是设置javascript对象的属性,二是读取javascript对象的属性,三是枚举对象所有的属性,四是当你看一个属性不顺眼时我告诉你怎么删除这个属性。
如果我只告诉你我为一个对象设置了属性,可是你没看到,你肯定不相信嘛,所以这篇主要说的其实就是set and get list and delete 。
在js中,通常使用”.”运算符来存取对象的属性。所以,这个get和set都很简单啦,都是通过这个“.”来操作的。
有没有一种被我耍了的感觉?嘿嘿。。
java的软件工程师应该对此没啥感觉。因为在java内部,读取对象的属性就是用的这个”点”操作符进行的。
学php的家伙你就可以把之对应为”->”。呵,现在感觉这个比”.”更帅。
位于”.”运算符左边的值应该是对对象的引用(就是一个对象的实体),
位于”.”运算符右边的值就是对象的属性名了。它必须是一个标识符,不能是字符串或表达式
上面这句话应该很好理解,对应我上一篇举的数组的例子。user的user_name属性应该写为 user.user_name而不应该是user.”user_name”。
参照书中代码,写一个小例子吧,让大家更好的理解一下这个get和set方法。呵呵。
var user = new Object();
// 设置对象的一个属性
user.name = "simaopig";
user.age = "25";
// 对象的属性也可以是对象啊,上一篇日志里说过了
user.son = new Object();
user.son.name = "小 simaopig";
// 没办法,最少还有两年才能有他
user.son.age = "-2";
// 读取对象的属性
alert("user->name is "+user.name+"\n\t"+
"now user->age is "+user.age+"\n\t"+
"now user->son->name is "+user.son.name+"\n\t"+
"now user->son->age is "+user.son.age);
呵呵,没办法,现在还没有儿子,呃,连姑娘也没有。呵呵。
所以我家儿子的年龄现在居他妈妈说应该是-2岁。嗯。。呵呵。。
呵,文章都发表了,忽然想起来没有讲属性的枚举。罪过,罪过。现在补上。
要想列举js对象的所有属性怎么办?告诉你,没办法。呵呵。。呃,先别着急扔砖头好不?
但是js提供了方法可以枚举出所有的用户定义的属性,但是不能枚举出某些预定义的属性或方法。
这个方法就是for/in 循环,啥?你说这个方法是用在数组身上的?呃,难道数组不是对象吗?
答,数组其实是对象。嗯。就是数组对象。。
这回得抄书中的代码了。呵呵,书中给了一个小函数,封装了一下for in 的方法,列举一个对象的所有用户定义的属性。
{
var names = "";
for(var name in obj) names += name + "\n";
alert(names);
}
如果列位客官要问,如果我直接调用还没有定义的对象的属性咋办?
告诉你,凉拌,那样你会得到一个神奇的结果:undefined
想删除对象的一个属性咋办?
你咋这么多问题?嗯。用这个方法吧,delete
例如:
delete user.name;
删除一个属性并不仅仅是把该属性设为undefined,而是真正的移除了这个属性。
for/in 可以枚举出已经被设为undefined的属性,但是被删除的属性,佛也没辙。。
文章作者:simaopig
本文地址:http://www.xiaoxiaozi.com/2009/06/20/907/
版权所有 © 转载时必须以链接形式注明作者和原始出处!
这个脚本很有趣,运行以后会输出什么呢?能不能给个demo?
[回复]
[回复]
@bolo
呵,因为我这个demo是做的弹出效果,你们可能不会喜欢。
但是强烈要求下,我放出demo地址吧。呵呵。
@huaimao
已经放出。呵呵。
[回复]
[回复]
@huaimao
呃,不会啊,我这里是没问题的哈。并且我没有设HOST。恩。
[回复]
看到了,三次弹窗
[回复]
@LAONB
呵呵,是的。因为大家都不喜欢弹窗,所以本来没打算放出demo的。呵呵。
[回复]
原来是这样用的,好像可以拿来捉弄人哦,
[回复]
@Lxhome
别啊,那不是恶意网站。。表吓我。。
[回复]