Js for in对象属性遍历问题

在Js中for in 是用来循环遍历对象的属性的,但是这个功能是有局限的,所遍历的属性必须是对象自定义的属性,对象的内置属性无法进行遍历。

当在对象中自定义属性覆盖了内置属性时:

IE6/7/8浏览器,for in仍不支持遍历这些属性。

chrome浏览器则可以对这些自定义的属性进行遍历。

var enumerablesTest = { toString: 1 };
    	var enumerables = true;
	  	for (i in enumerablesTest) {
	  	   enumerables = null;
	  	}
    	if( enumerables ){
    		enumerables = [‘hasOwnProperty‘, ‘valueOf‘, ‘isPrototypeOf‘, ‘propertyIsEnumerable‘,
                           ‘toLocaleString‘, ‘toString‘, ‘constructor‘];
    	}
    	//--------------------------------------------------------------------------------------------------------------
    	Ext.apply = function(object, config, defaults) {
            if (defaults) {
                Ext.apply(object, defaults);
            }

            if (object && config && typeof config === ‘object‘) {
                var i, j, k;

                for (i in config) {
                    object[i] = config[i];
                }

                if (enumerables) {
                    for (j = enumerables.length; j--;) {
                        k = enumerables[j];
                        if (config.hasOwnProperty(k)) {
                            object[k] = config[k];
                        }
                    }
                }
            }

            return object;
        };

  

时间: 2025-01-03 08:34:38

Js for in对象属性遍历问题的相关文章

js 对象属性遍历

function 对象属性遍历(){ var obj = {x:1,y:2,c:3};for (var name in obj){ alert ( obj[name] )} } function 数组(){ var 数组=[1,2,3,[1,2,4,5,7,8],4,5]; //数组嵌套数组 var 数组2=[ {x:100}, 2, [7,8,9], function(){ return 999; }(), "abc" ] var arr =new Array(10); arr[20

js对象-属性遍历

为了加强js对象的认知,又刷了一题. 直接上题目: 找出对象 obj 不在原型链上的属性(注意这题测试例子的冒号后面也有一个空格~)1.返回数组,格式为 key: value2.结果数组不要求顺序 示例: //输入 var C = function() {this.foo = 'bar'; this.baz = 'bim';}; C.prototype.bop = 'bip'; iterate(new C()); //输出 ["foo: bar", "baz: bim&quo

JS数组与对象的遍历方法大全

本文简单解析各种数组和对象属性的遍历方法: 原生for循环.for-in及forEach ES6 for-of方法遍历类数组集合 Object.key()返回键名的集合 jQuery的$.each() underscore的_.each() 文中的范例基于以下数组和对象. ? 1 2 3 4 5 6 7 8 var arrTmp = ["value1","value2","value3"]; var objTmp = {     aa:"

前端程序员的蜕变——JS的 event 对象属性、使用实例、兼容性处理(极大提高代码效率、减少代码量)

下面讨论一下 js 中的 Event 对象,主要从以下三个方面详细的描述(点击标题可跳转到对应部分): 1.什么是event 2.怎么用event,用他该注意什么,几个简单实际应用 3.event在不同浏览器的存在的兼容问题,及如何去解决  1.  什么是event Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态等等.说的通俗一点就是,event是JS的一个系统内置对象.平时无法使用,当DOM元素发生按键.鼠标等等各种事件时,系统会自动根据D

js for 获取对象属性

var arr = ['a', 'b', 'c']; // 1 for (var index = 0; index < arr.length; index++) { console.log(arr[index]); } // 2 ES5 arr.forEach(function (value) { console.log(value); }); // 3 for-in work the array or string or other collections that will return a

js之oop &lt;三&gt;属性标签

读取属性标签 获取对象属性标签,用 Object.getOwnPropertyDescriptor方法.getOwnPropertyDescriptor(); 参数:属性所在对象(object),属性名(string) var obj = { code:2,element:"ele" }; Object.getOwnPropertyDescriptor(obj,"code"); //输出 { value: 2, writable: true, enumerable:

JavaScript服务器编程(对象属性枚举中应当避免原型污染问题)

前面文章中讨论了JS开发中对象属性枚举的ES3和ES5方案并给出了一组常用工具函数,其实,企业开发中真正应用时还存在不少问题.本文想基于前文进一步探讨一下有关原型污染的问题.由于JS的先天不足,有关原型污染背后隐藏着一个大的"故事",以后我们的文章中还要涉及其中一些情节. 问题 前面在讨论使用in运算符检测对象中是否存在属性的方案,但是通过所举的示例也发现一个问题,例如: console.log('"ID" in contacts: ',"ID"

对象属性的可枚举性

JavaScript中对象的属性分为两种:数据属性和访问器属性.然后根据具体的上下文环境的不同,又可以将属性分为:原型属性和实例属性.原型属性是定义在对象的原型(prototype)中的属性,而实例属性一方面来自构造的函数中,然后就是构造函数实例化后添加的新属性. 在JavaScript中除了检测对象的属性是否存在,还会经常对对象的属性进行遍历(枚举).而在JavaScript中遍历一个对象的属性并不太简单,主要有两个原因: JavaScript中的对象通常都处在某个原型链中,它会从一个或多个的

遍历js对象属性

<script type="text/javascript"> var p = { a:'a', e:{ a:'a', c:'c' }, b:'1', c:{ a:2, x:'fffff', y:{ ee:'fff', f:200 } } } ; //遍历js对象属性 var ObjInfo = { /** @param obj 要遍历的对象 @param placeholder 占位符,排版用,如空格 */ info : function(obj,placeholder)