遍历js对象中的属性以及成员方法
2013-12-16 15:35
344 查看
用js写了一段简单的遍历js对象的成员中属性和成员方法的代码:
//对象克隆的方法,普通的对象赋值,例如var1和var2都是对象,当var1=var2,只是让var1指向了var2的那片内存空间,
//并没有为var1另外分配一片内存空间
//此处的clone方法,用于重新开辟一片内存空间,但值得注意的是,如果对象中含有对象,那么克隆就可能造成递归
Object.prototype.clone=function(){
var result=new Object();
if(this){//如果这个对象不为空或者undefined
for(var key in this){
result.key=this.key;
}
}
return result;
}
然后调用该方法:
var myobj1={name:"zhangsan",age:12,tel:"13584544",say:function(words){
document.write(this.name+" say:"+words);
},sex:"male"};
var myobj2=myobj1.clone();
myobj2.say("hello , iam zhangsan ");
然后一直提示,myobj2变量没有say方法,呵呵。。。然后进堆栈里看,原来myobj2克隆失败,当遍历myobj1的各属性和方法时,循环变量key并不为空,但是result的属性却没有增加,后来换了一种写法:
result[key]=this[key];然后就成功了,哎。搞不懂原来 对象.key 和 对象[key] 这两种方法是有区别的。原来一直以为他们是等价的。
//对象克隆的方法,普通的对象赋值,例如var1和var2都是对象,当var1=var2,只是让var1指向了var2的那片内存空间,
//并没有为var1另外分配一片内存空间
//此处的clone方法,用于重新开辟一片内存空间,但值得注意的是,如果对象中含有对象,那么克隆就可能造成递归
Object.prototype.clone=function(){
var result=new Object();
if(this){//如果这个对象不为空或者undefined
for(var key in this){
result.key=this.key;
}
}
return result;
}
然后调用该方法:
var myobj1={name:"zhangsan",age:12,tel:"13584544",say:function(words){
document.write(this.name+" say:"+words);
},sex:"male"};
var myobj2=myobj1.clone();
myobj2.say("hello , iam zhangsan ");
然后一直提示,myobj2变量没有say方法,呵呵。。。然后进堆栈里看,原来myobj2克隆失败,当遍历myobj1的各属性和方法时,循环变量key并不为空,但是result的属性却没有增加,后来换了一种写法:
result[key]=this[key];然后就成功了,哎。搞不懂原来 对象.key 和 对象[key] 这两种方法是有区别的。原来一直以为他们是等价的。
相关文章推荐
- html5的FormData对象和input的file属性以及window.URL.createObjectURL( ) 方法
- 类和对象:成员属性、成员方法 — 学习笔记3
- 深入浅出Javascript(三)创建自定义对象以及属性、方法
- C++ 通过对象方式 、指针方式两种方式去访问成员变量(属性或者方法)
- oc中成员变量的set/get方法 以及 属性点语法的使用
- 类属性和方法,对象属性和方法。以及用闭包做的私有属性例子。
- JS 输出对象的属性以及方法[转载]
- javascript面向对象(对象的创建以及属性和方法的添加)
- Server对象有那些属性方法以及怎样使用
- 获得对象的方法以及属性
- 关于static关键字的使用以及与成员方法、成员属性的总结
- 什么是类、对象、属性、方法、成员?
- js数组对象以及数组常用属性和方法
- 什么是类、对象、属性、方法、类的成员
- Ruby之旅(二) Ruby的基本语法以及对象的使用,方法的定义及调用,属性的定义及使用
- 浅谈 JS 对象添加 getter与 setter 的5种方法以及如何让对象属性不可配置或枚举
- Thymeleaf系列三 调用对象的成员变量值、Map值、List值、属性的方法 、ctx对象、param、session和application
- XMLHttpRequest对象三个属性,以及open,send方法
- Ajax XMLHttpRequest对象的三个属性以及open和send方法