javascript的propertyIsEnumerable()方法使用介绍

propertyIsEnumerable()是用来检测属性是否属于某个对象的,如果检测到了,返回true,否则返回false,下面为大家介绍下其具体的使用

propertyIsEnumerable()是用来检测属性是否属于某个对象的,如果检测到了,返回true,否则返回false. 
1.这个属性必须属于实例的,并且不属于原型. 
2.这个属性必须是可枚举的,也就是自定义的属性,可以通过for..in循环出来的. 
只要符合上面两个要求,就会返回true; 


function MyObject() { 
      this.name = "我是实例的属性"; 


var obj = new MyObject(); 

alert(obj.propertyIsEnumerable("name"));//true 


MyObject.prototype.say = "我是原型的属性"; 

alert(obj.propertyIsEnumerable("say")); //false 


for (var i in obj) { 
      alert(i);//name,say


——————————————————————————————————————————————————————————————————

object对象的hasOwnProperty propertyIsEnumerable两个方法的使用


 首先说下基本的概念:

 hasOwnProperty:是用来判断一个对象是否有你给出名称的属性或对象。不过需要注意的是,此方法无法检查该对象的原型链中是否具有该属性,该属性必须是对象本身的一个成员,返回一个bool值

一个对象是否可以进行for in穷举,我们可以通过propertyIsEnumerable属性来判断,说明如下:  propertyIsEnumerable 属性,返回 Boolean 值,指出所指定的属性是否为一个对象的一部分以及该属性是否是可列举的。
var bStr = "Test String".hasOwnProperty("split");    // 得到false, 因为不能检测原型链中的属性 
var bStr1 = String.prototype.hasOwnProperty("split"); //String对象的原型上本来就有这个属性,自然返回true 
var bObj = ({fnTest:function(){}}).hasOwnProperty("fnTest"); // 返回true,因为不是检测原型中的属性

hasOwnProperty的用法不仅仅在此,在Jquery中在编写插件中,少不了的一步,就是初始化参数,其中一个很重要的方法就是$.extend();他的原理就是应用了hasOwnProperty()方法;

利用for in 循环遍历对象成员中,有没有相同名称的对象成员,有的话就用这个新的对象成员替换掉旧的,通过这种方式,我们就可以通过修改方法中的参数变化,从而控制程序的流程,而对于那些没有改变的部分,仍使用默认值进行控制

我们自己也可以简单的模拟一下这个extend函数,如下

复制代码
function extend(target,source){//target 旧的 source新的
  for (var i in source){
        if(target.hasOwnProperty(i)){
        target[i]=source[i];
        }
    }
    return target;
}
var a1={"first":1,"second":"lyl","third":"bob"};
var b1={"third":"leo"};
extend(a1,b1);
for(var i in a1){
    alert(a1[i]);//原本是bob,现在变成leo了
}

通过这个例子 我们就可以通过修改默认值的参数值来修改页面了。


这里我们会提高另外一个方法,就是propertyIsEnumerable,通过这个方法我们可以检测出这个对象成员是否是可遍历的,如果是可遍历出来的,证明这个对象就是可以利用for in 循环进行遍历的

格式如下:object.propertyIsEnumerable(proName)

如果 proName 存在于 object 中且可以使用一个 For…In 循环穷举出来,那么 propertyIsEnumerable 属性返回 true。如果 object 不具有所指定的属性或者所指定的属性不是可列举的,那么 propertyIsEnumerable 属性返回 false。
 
典型地,预定义的属性不是可列举的,而用户定义的属性总是可列举的。
propertyIsEnumerable 属性不考虑原型链中的对象。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值