zoukankan      html  css  js  c++  java
  • js Object.prototype.hasOwnProperty() 与 for in 区别

    hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性

    语法

    obj.hasOwnProperty(prop)
    

    参数

    prop要检测的属性 [字符串] 名称或者 [Symbol]。

    返回值

    用来判断某个对象是否含有指定的属性的 [Boolean] 。

    描述

    所有继承了 [Object]的对象都会继承到 hasOwnProperty 方法。这个方法可以用来检测一个对象是否含有特定的自身属性;和 [in]运算符不同,该方法会忽略掉那些从原型链上继承到的属性。

    示例

    使用 hasOwnProperty 方法判断属性是否存在

    下面的例子检测了对象 o 是否含有自身属性 prop:

    o =newObject();
    o.prop ='exists';functionchangeO(){
      o.newprop = o.prop;delete o.prop;}
    
    o.hasOwnProperty('prop');// 返回 truechangeO();
    o.hasOwnProperty('prop');// 返回 false
    

    自身属性与继承属性

    下面的例子演示了 hasOwnProperty 方法对待自身属性和继承属性的区别:

    o =newObject();
    o.prop ='exists';
    o.hasOwnProperty('prop');// 返回 true
    o.hasOwnProperty('toString');// 返回 false
    o.hasOwnProperty('hasOwnProperty');// 返回 false
    

    遍历一个对象的所有自身属性

    下面的例子演示了如何在遍历一个对象的所有属性时忽略掉继承属性,注意这里 [for...in] 循环只会遍历可枚举属性,所以不应该基于这个循环中没有不可枚举的属性而得出 hasOwnProperty 是严格限制于可枚举项目的(如同 [Object.getOwnPropertyNames()])。

    var buz ={
        fog:'stack'};for(var name in buz){if(buz.hasOwnProperty(name)){alert("this is fog ("+ name +") for sure. Value: "+ buz[name]);}else{alert(name);// toString or something else}}
    

    使用 hasOwnProperty 作为属性名

    JavaScript 并没有保护 hasOwnProperty 属性名,因此某个对象是有可能存在使用这个属性名的属性,使用外部的 hasOwnProperty 获得正确的结果是需要的:

    var foo ={
        hasOwnProperty:function(){returnfalse;},
        bar:'Here be dragons'};
    
    foo.hasOwnProperty('bar');// 始终返回 false// 如果担心这种情况,可以直接使用原型链上真正的 hasOwnProperty 方法({}).hasOwnProperty.call(foo,'bar');// true// 也可以使用 Object 原型上的 hasOwnProperty 属性
    Object.prototype.hasOwnProperty.call(foo,'bar');// true
  • 相关阅读:
    extel操作
    postman 使用post方式提交参数值
    json_encode 转化数组时,中文不转义出现乱码的解决方法
    csnd 不好使,所以我来博客园了
    Nodejs 之Ajax的一个实例(sql单条件查询&并显示在Browser端界面上)
    JS 之JSON
    Nodejs sql模块及模块化思想
    Nodejs之Ajax
    Nodejs 之express框架的应用---简单的登录界面
    Nodejs 入门 12-28
  • 原文地址:https://www.cnblogs.com/ysk123/p/10009104.html
Copyright © 2011-2022 走看看