遍历js对象中的属性以及成员方法

       用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] 这两种方法是有区别的。原来一直以为他们是等价的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值