精华内容
下载资源
问答
  • JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性 判断是否包含某对象 我们知道访问对象属性有两种形式,如下: var obj = { name:'听风是风' }; obj.name; //听风是风 obj['name']; //听风是风 ...

    JS 判断对象属性是否存在,判断是否包含某个属性,是否为自身属性

    判断是否包含某对象

    我们知道访问对象属性有两种形式,如下:

    var obj = {
      name:'听风是风'
    };
    obj.name;   //听风是风
    obj['name'];   //听风是风
    

    那么马上有同学就想到用这两种形式判断对象是否包含某个属性,因为原型链上如果某个属性不存在就会返回undefined,比如:

    if(!obj.age){
        console.log('obj没有age属性');
    }
    

    这么做行不行,行,但是存在缺陷。最特殊的情况就是我们有age字段,而它的值偏偏就是 undefined,那这样就尴尬了。

    怎么办呢,一般推荐使用 in 运算符,用法是属性名 in 对象,如果存在返回 true,反之为 false,来看个例子:

    var echo = {
        name:'听风是风',
        job:undefined
    };
    console.log('name' in echo);   //true
    console.log('job' in echo);    //true
    console.log('age' in echo);    //false
    

    但需要注意的是,in 只能判断对象有没有这个属性,无法判断这个属性是不是自身属性,啥意思?咱们接着说。

    判断是否是自身属性

    一个最简单的构造函数创建实例的例子:

    function Parent(){
        this.name = 'echo';
    };
    Parent.prototype.age = 26;
    var o = new Parent();
    o.name//echo
    o.age//26
    

    在这个例子中,对于实例 o 而言,name 就是是自身属性,这是它自己有的,而 age 是原型属性,o 虽然没有这个属性,但在需要时,它还是顺着原型链找到了自己的老父亲 Parent,并借用了这个属性。

    所以当我们用 in 判断时可以发现结果均为 true:

    'name' in o;//true
    'age' in o;//true
    

    针对这个问题,如果我们还要判断是否是自身属性,就得借用方法hasOwnProperty(),不信你看:

    o.hasOwnProperty('name');//true
    o.hasOwnProperty('age');//false
    

    说到底hasOwnProperty()做了两件事,除了判断对象是否包含这个属性,还判断此属性是不是对象的自身属性。

    所以我们可以简单总结一下,如果我们只需判断对象有没有某个属性,使用 in 运算符就好了。而如果我们还要关心这个属性是不是自身属性,那么推荐hasOwnProperty()方法。

    说了这么多,这两个判断有什么使用场景呢?

    关于 in 运算符判断对象有没有某个属性,最常见的,我们希望给某个对象添加一个方法,直接添加又担心其他同事已经声明过,存在覆盖的可能性,所以使用 in 来判断,没有这个属性,咱们再加。

    当然针对这个问题,使用 Symbol 来确保对象 key 的唯一性也是不错的做法,这个就看实际场景了。

    而关于hasOwnProperty()这个方法呢,我目前遇到的就是深拷贝实现时会使用,因为我们知道每个对象都有原型,而深拷贝时我们只是希望拷贝对象的自身属性,使用此方法做个区分就是非常奈斯的做法了。

    好了,这篇文章就说到这里了,全文结束。

    转自:https://www.cnblogs.com/echolun/p/12377650.html

    展开全文
  • 使用 in 关键字 语法: <...如果包含, 则返回 true, 否则返回 false let person = { name: 'wj', age: 20 } // true console.log('name' in person) // false console.log('name2' in person)
    • 使用 in 关键字
      语法: <propertyName> in <obj>
      如果包含, 则返回 true, 否则返回 false
    • hasOwnProperty 判断是否是对象本身 (不包含其原型对象) 的属性
    
     let person = {
        name: 'wj',
        age: 20
      }
     // true
      console.log('name' in person)
      // false
      console.log('name2' in person)
      
      // hasOwnProperty 判断是否是对象本身 (不包含其原型对象) 的属性
      console.log(person.hasOwnProperty('mail'));
    
    展开全文
  • hasOwnProperty:对象.hasOwnProperty(属性名)(判断对象是否含有某个属性名,返回一个布尔值) getLifeInsBranchByCommissioner(params).then(res => { console.log('res获取专员负责的寿险机构接口', res...

    hasOwnProperty:对象.hasOwnProperty(属性名)(判断对象中是否含有某个属性名,返回一个布尔值)

     getLifeInsBranchByCommissioner(params).then(res => {
            console.log('res获取专员负责的寿险机构接口', res)
            const data = res.hasOwnProperty('data')
            console.log('data', data)
           list = data === false ? [] : res.data.branchList
            console.log('list', list)//[]
         
          }).catch(e => {
            this.$message.error(e.toString())
          })

     

    展开全文
  • vue 判断对象是否包含某个属性,el-table formatter判断 当前的业务逻辑是表格中大概有四五个字段需要判断,如果是null或者0就返回暂无数据,有值的话就返回对应的值,如下图: 由于需要进行的操作是一样的,所以用...

    vue 判断对象是否包含某个属性,el-table formatter判断


    当前的业务逻辑是表格中大概有四五个字段需要判断,如果是null或者0就返回暂无数据,有值的话就返回对应的值,如下图:
    在这里插入图片描述
    由于需要进行的操作是一样的,所以用一个formatter就可以了,所以要判断对应的字段,代码如下:
    1.表格部分

    <el-table-column
      label="报送数量"
      prop="vulWarnNum"
      width="140"
      align="center"
      :formatter="dataFormat"
    />
    

    2.方法体部分

    dataFormat(row, column) {
          const field = column.property
          if (Object.prototype.hasOwnProperty.call(row, field)) {
            if (row[field] == null || row[field] === 0) {
              return '暂不要求'
            }
          }
          return row[field]
        }
    

    其中Object.prototype.hasOwnProperty.call(row, field)就是判断row中是否包含对应的字段名称
    原先的写法是

    row.hasOwnProperty(field)
    

    现在换成

    Object.prototype.hasOwnProperty.call(row, field)
    

    但是报错ESLint: Do not access Object.prototype method 'hasOwnProperty' from target object.(no-prototype-builtins),所以最好是从 Object.prototype 调用这些方法

    展开全文
  • 下面本篇就来给大家介绍几种使用javascript判断对象是否包含有某属性的常见方法,希望对大家有所帮助。一、使用“!==”“!==”方法在工作中很常见,可以看出该方法可以判断继承来的属性。let obj = { x: 1 };obj.x...
  • JavaScript 中的所有事物都是...JavaScript检测对象中是否存在某个属性使用in关键字该方法可以判断对象的自有属性和继承来的属性是否存在。var o={x:1};"x" in o; //true,自有属性存在"y" in o; //false"toString" ...
  • ==”进行判断,这种方法在工作中很常见,可以看出该方法可以判断继承来的属性。let obj = { x: 1 };obj.x !== undefined; // true 有x属性obj.y !== undefined; // false 无y属性obj.toString !== undefined; // ...
  • js判断对象为空已经有好几种方法了,但是个人觉得不是特别方便。 比如: 1、把对象通过 JSON.stringify 转为字符串,再判断字符串是否等于 " {} " 2、for in循环,判断key是否存在 3、jq的方法 es6已经帮我们很好的...
  • var obj = {name:'张三',age:18}; obj.hasOwnProperty('name'); // --> true obj.hasOwnProperty('id'); // --> false
  • hasOwnProperty 用来判断对象否有自己的某个属性。这个方法会查找一个对象是否某个属性,但是不会去查找它的原型链。 为了判断一个对象是否包含自定义属性而不是原型链上的属性, 我们需要使用继承自 Object....
  • 一、js判断一个对象是否为空 方法一: let obj1 = {} let obj2 = {a:1} function empty(obj){ for (let key in obj){ return false; //非空 } return true; //为空 } console.log(empty(obj1)) //true为空 console....
  • 我们在使用对象的时候,通过点或方括号可以获取对象属性值,如果该对象自身不存在这个属性,就会返回undefined。 var obj={ name:"小破船", doWhat:"借箭" }; console.log(obj.name);//小破船 console....
  • javascript判断对象是否存在某属性有三种方法,三种方式各有优缺点,不同的场景使用不同的方式,有时还需要结合使用,比如遍历自身属性的时候,就会把 for ··· in ···和 hasOwnProperty()结合使用。javascript...
  • jquery判断元素是否包含某个属性的方法:首先使用div标签创建文字,并设置其id为test;然后通过元素名称获得div对象,使用【attr()】方法获得id属性;最后使用if语句判断获得的id值是否为undefined。本教程操作环境...
  • 今日排雷:js判断对象是否包含某个元素 话不多说,上代码 ~ let data = { a:111, b:0, c:undefined, d:null, e:'', f:NaN, g:-0 } if(data['a']){ console.log('data内包含a元素')} //data内包含a元素 if
  • Vue 判断对象是否存在某个属性/字段

    千次阅读 2021-05-06 21:16:50
    Vue 判断对象是否存在某个属性/字段 if(row.hasOwnProperty('url')){ //row对象存在'url'属性 }else{ //row对象不存在'url'属性 }
  • if (data && data.hasOwnProperty('Rows')) { (data.Rows.Row ||[]).map((row) => { if (row.hasOwnProperty("Summary")) { ...hasOwnProperty 就是判断是否含有key 为 Rows 的属性 ...
  • 判断对象是否有某属性的常见方式总结,不同的场景要使用不同的方式。一、点( . )或者方括号( [ ] )通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。当然,这里的“不存在”指...
  • let a1 = { b: { c: { d: { e: 1 } } } } let a2 = { c: { d: { e: 1 } } } let a3 = { d: { e: 1 } ... //为啥需要这样函数,因为嵌套函数,需要判断上一层对象存在才能继续访问子对象,不然会报错 function get...
  • 1.使用 in 关键字 var obj = {'name':111} console.log( 'name' in obj); // --- true 字段 console.log('aaa' in obj);...该方法会返回一个布尔值,指示对象自身属性是否具有指定的属性(也就是...
  • [Java教程]javascript判断嵌套对象属性是否存在0 2012-07-18 19:01:40很多时候,我们需要判断对象属性是否存在,以便进行下一步的操作而对象的属性又有一定的依赖关系,比如user.house.dog//只有当user.house为真...
  • var obj = {name: 'abc',age: 18}; if('name' in obj){ console.log('yes'); } else { console.log('none'); } //输出“true”
  • 1. 直接查找属性判断undefined var str = {fname:"uw3c",lname:"js",age:10} console.log(str.fname);//uw3c console.log(str.sex);//undefined 2. 使用 in 运算符,判断true 或 false var str = {fname:"uw...
  • 1,判断对象是否存在-------!$.isEmptyObject() ...2,判断对象属性是否为空-----Object.keys().length if(Object.keys(obj).length!=0){ console.log('obj not null') }else{ console.log('obj is nul
  • // 判断对象是否包含某个属性基本方法 var obj = {a:undefined} console.log(obj.hasOwnProperty('a')) //true //注意如果一个重写了 hasOwnProperty 的话会改变 // 如 var obj1 ={ a:'1', hasOwnProperty(){ ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,334
精华内容 29,333
关键字:

js判断对象是否包含某个属性