码迷,mamicode.com
首页 > Web开发 > 详细

让js的forin循环禁止forin到某个属性的话要怎么做

时间:2014-10-28 19:49:49      阅读:271      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   ar   使用   for   sp   div   

//知识点1:for In循环是可以枚举到继承的属性的;
//知识点2:使用defineProperty让属性无法通过forIn枚举到;
//知识点3:用definedProperty重新定义一个属性药把这个属性设置为空,然后重新定义才行哦;
var obj = {}; Object.defineProperty(obj, "name", { get : function() {return 1}, enumberable : false }); //使用ECMA5中的defineProperty可以让自定义属性不可枚举; for( prop in obj ){ console.log(prop) //name是无法枚举到的; }; function extend( _super ) { var F = function() {}; F.prototype = _super; return (new F); }; var Fn = function(){}; Fn.prototype = { constructor : Fn, __prop______ : "super" }; var subInstance = extend( new Fn() ); //for in 循环是可以枚举到父级的继承属性的; for(var prop in subInstance) console.log(prop)//constructor ,__prop______ //要让继承的属性也无法枚举到,那就在父级中设置enumberable; Object.defineProperty(Fn.prototype, "_test",{ enumberable : false , value : "__new_super" }); //PS,如果你重新定义__prop____为不可以枚举不可行,必须要把__prop____设置为空然后重新定义不可以枚举的属性才行; Fn.prototype.__prop______ = undefined; Object.defineProperty(Fn.prototype, "__prop______",{ enumberable : false , value : "_new___prop______" }); var subInstance = extend( new Fn() ); for(var prop in subInstance); console.log(prop)//constructor ,__prop______

 

让js的forin循环禁止forin到某个属性的话要怎么做

标签:style   blog   io   color   ar   使用   for   sp   div   

原文地址:http://www.cnblogs.com/diligenceday/p/4057348.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!