zoukankan      html  css  js  c++  java
  • for...in与点语法

    语法

    for...in语句循环一个指定的变量来循环一个对象所有可枚举的属性。如下所示

    for (variable in object){
    statements
    }
    

    问题

    在实际的使用过程中发现,在for in 循环遍历中,对于json对象,如果通过obj.key是无法访问值的,但是通过obj[key]可以访问值。
    然而,我们知道,对于单独的obj的话,可以通过obj.key来访问。

    Function.prototype.addMethod = function (obj) {
    	
    	for (key in obj){
    		//注意,遍历时,obj.key = undefined是无法获取到对应json对象里面的函数
    		this.prototype[key] = obj[key];
    		console.log(typeof key);//输出string
    		//console.log(obj.key);//输出undefined
                    //console.log(obj[key]);//能够得到传递进来的属性值
    	}
    	return this;
    }
    Methods = function(){};
    
    Methods.addMethod({"aa":function(){alert(aa)},"bb":function(){alert(bb)}});
    
    

    解答

    原因:Object支持点语法Objec.attribute访问其属性,也支持Object["attribute"]的方式访问属性。但是在for...in循环中,key只是个存储位置,里面存储了object的属性值名称字符串。因此,无法通过点语法进行访问,强行访问的话,由于没有属性key,只能返回undefined。

  • 相关阅读:
    hdu 1754 I Hate It
    hdu 2546 饭卡
    hdu 4506 小明系列故事——师兄帮帮忙
    hdu 3665 Seaside
    hdu 3790 最短路径问题
    hdu 1869 六度分离
    最长递增字串的三种做法
    问题集???
    IOS开发学习 碎片S
    超级台阶 (NYOJ—76)
  • 原文地址:https://www.cnblogs.com/omg-two/p/6512185.html
Copyright © 2011-2022 走看看