精华内容
下载资源
问答
  • javascript判断对象是否存在某属性有三种方法,三种方式各有优缺点,不同的场景使用不同的方式,有时还需要结合使用,比如遍历自身属性的时候,就会把 for ··· in ···和 hasOwnProperty()结合使用。javascript...

    javascript判断对象是否存在某属性有三种方法,三种方式各有优缺点,不同的场景使用不同的方式,有时还需要结合使用,比如遍历自身属性的时候,就会把 for ··· in ···和 hasOwnProperty()结合使用。

    90fc6f6b57e97c761a2bf6dc0727d7f8.png

    javascript判断对象是否存在某属性的方法介绍:

    一、使用undefined判断

    通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。当然,这里的“不存在”指的是对象自身和原型链上都不存在,如果原型链有该属性,则会返回原型链上的属性值。// 创建对象

    let test = {name : 'lei'}

    // 获取对象的自身的属性

    test.name //"lei"

    test["name"] //"lei"

    // 获取不存在的属性

    test.age //undefined

    // 获取原型上的属性

    test["toString"] //toString() { [native code] }

    // 新增一个值为undefined的属性

    test.un = undefined

    test.un //undefined 不能用在属性值存在,但可能为 undefined的场景

    所以,我们可以根据 Obj.x !== undefined 的返回值 来判断Obj是否有x属性。

    这种方式很简单方便,局限性就是:不能用在x的属性值存在,但可能为 undefined的场景。 in运算符可以解决这个问题

    二、 in 运算符

    MDN 上对in运算符的介绍:如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。'name' in test //true

    'un' in test //true

    'toString' in test //true

    'age' in test //false

    示例中可以看出,值为undefined的属性也可正常判断。

    这种方式的局限性就是无法区分自身和原型链上的属性,在只需要判断自身属性是否存在时,这种方式就不适用了。这时需要hasOwnProperty()

    三、hasOwnProperty()test.hasOwnProperty('name') //true 自身属性

    test.hasOwnProperty('age') //false 不存在

    test.hasOwnProperty('toString') //false 原型链上属性

    可以看到,只有自身存在该属性时,才会返回true。适用于只判断自身属性的场景。

    三种方式各有优缺点,不同的场景使用不同的方式,有时还需要结合使用,比如遍历自身属性的时候,就会把 for ··· in ···和 hasOwnProperty()结合使用。

    展开全文
  • JavaScript 提供多个内建对象...JavaScript判断某对象是否存在的方法:1、直接判断对象不为nullif (!myObj) {var myObj = { };}Javascript语言是"先解析,后运行",解析时就已经完成了变量声明2、使用window对象判...

    JavaScript 提供多个内建对象,比如 String、Date、Array 等等。 对象只是带有属性和方法的特殊数据类型。下面我们来看一下如何判断对象是否存在。

    13b1570859e2bac42cfddb680ecef7a7.png

    JavaScript中判断某对象是否存在的方法:

    1、直接判断对象不为nullif (!myObj) {

    var myObj = { };

    }

    Javascript语言是"先解析,后运行",解析时就已经完成了变量声明

    2、使用window对象判断某对象是否存在if (!window.myObj) {

    var myObj = { };

    }

    3、使用this对象判断某对象是否存在if (!this.myObj) {

    this.myObj = { };

    }

    在某些运行环境中(比如V8、Rhino),window未必是顶层对象。所以,考虑改成this进行判断,在全局变量的层面中,this关键字总是指向顶层变量,所以就可以独立于不同的运行环境。

    4、方法三这样写可读性较差,而且this的指向是可变的,容易出错,所以进一步改写:var global = this;

    if (!global.myObj) {

    global.myObj = { };

    }

    5、可以使用typeof运算符,判断myObj是否有定义。if (typeof myObj == "undefined") {

    var myObj = { };

    }

    这是目前使用最广泛的判断javascript对象是否存在的方法。

    6、由于在已定义、但未赋值的情况下,myObj的值直接等于undefined,所以上面的写法可以简化:if (myObj == undefined) {

    var myObj = { };

    }

    有两个地方需要注意,首先第二行的var关键字不能少,否则会出现ReferenceError错误,其次undefined不能加单引号或双引号,因为比较的是undefined这种数据类型,而不是"undefined"这个字符串。

    7、用精确比较===判断对象是否存在if (myObj === undefined) {

    var myObj = { };

    }

    8、根据javascript的语言设计,undefined == null,所以比较myObj是否等于null,也能得到正确结果if (myObj == null) {

    var myObj = { };

    }

    不过,虽然运行结果正确,但是从语义上看,这种判断方法是错的,应该避免。

    因为null指的是已经赋值为null的空对象,即这个对象实际上是有值的,而undefined指的是不存在或没有赋值的对象。

    因此,这里只能使用"比较运算符"(==),如果这里使用"精确比较运算符"(===),就会出错

    9、还可以使用in运算符,判断myObj是否为顶层对象的一个属性if (!('myObj' in window)) {

    window.myObj = { };

    }

    10、使用hasOwnProperty方法,判断myObj是否为顶层对象的一个属性if (!this.hasOwnProperty('myObj')) {

    this.myObj = { };

    }

    总结:

    1、如果只判断对象是否存在,推荐使用第五种写法。

    2、如果除了对象是否存在,还要判断对象是否有null值,推荐使用第一种写法。

    3、除非特殊情况,所有变量都应该使用var命令声明。

    4、为了跨平台,建议避免使用window表示顶层对象。

    5、在Javascript语言中,null和undefined容易产生混淆。在可能同时涉及两者的情况下,建议使用"精确比较"运算符(===)。

    展开全文
  • Js中的属性分为两种,一种是固有属性,另外是编程时赋预予的属性,这两种属性的判断方式是不一样的。 1.使用in关键字。 ... //true,自有属性存在 "y" in o; //false "toString" in o; //true

    Js中的属性分为两种,一种是固有属性,另外是编程时赋预予的属性,这两种属性的判断方式是不一样的。

    1.使用in关键字。

    该方法可以判断对象的自有属性和继承来的属性是否存在。

    var o={x:1};
    "x" in o;            //true,自有属性存在
    "y" in o;            //false
    "toString" in o;     //true,是一个继承属性

     

    2.使用对象的hasOwnProperty()方法。

    该方法只能判断自有属性是否存在,对于继承属性会返回false。

    var o={x:1};
    o.hasOwnProperty("x");       //true,自有属性中有x
    o.hasOwnProperty("y");       //false,自有属性中不存在y
    o.hasOwnProperty("toString"); //false,这是一个继承属性,但不是自有属性

     

    3.用undefined判断

    自有属性和继承属性均可判断。

    var o={x:1};
    o.x!==undefined;        //true
    o.y!==undefined;        //false
    o.toString!==undefined  //true
    

    该方法存在一个问题,如果属性的值就是undefined的话,该方法不能返回想要的结果,如下。

    var o={x:undefined};
    o.x!==undefined;        //false,属性存在,但值是undefined
    o.y!==undefined;        //false
    o.toString!==undefined  //true

     

    4.在条件语句中直接判断

    var o={};
    if(o.x) o.x+=1;  //如果x是undefine,null,false," ",0或NaN,它将保持不变
    一般来说,用第4种比较简便
    展开全文
  • 下面我们来看一下如何判断对象是否存在某属性。1、使用in关键字该方法可以判断对象的自有属性和继承来的属性是否存在。var o = {x: 1};"x" in o; //true,自有属性存在"y" in o; //false"toString" in o; //true,是...

    JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等等。对象只是一种特殊的数据。对象拥有属性和方法。下面我们来看一下如何判断对象是否存在某属性。

    5d65e3830ced9315.jpg

    1、使用in关键字

    该方法可以判断对象的自有属性和继承来的属性是否存在。var o = {

    x: 1

    };

    "x" in o; //true,自有属性存在

    "y" in o; //false

    "toString" in o; //true,是一个继承属性

    2、使用对象的hasOwnProperty()方法

    该方法只能判断自有属性是否存在,对于继承属性会返回false。var o = {

    x: 1

    };

    o.hasOwnProperty("x");   //true,自有属性中有x

    o.hasOwnProperty("y");   //false,自有属性中不存在y

    o.hasOwnProperty("toString"); //false,这是一个继承属性,但不是自有属性

    3、使用undefined判断

    自有属性和继承属性均可判断。var o = {

    x: 1

    };

    o.x !== undefined; //true

    o.y !== undefined; //false

    o.toString !== undefined //true

    该方法存在一个问题,如果属性的值就是undefined的话,该方法不能返回想要的结果,如下。var o = {

    x: undefined

    };

    o.x !== undefined; //false,属性存在,但值是undefined

    o.y !== undefined; //false

    o.toString !== undefined //true

    4、在条件语句中判断var o = {};

    if (o.x) o.x += 1; //如果x是undefine,null,false," ",0或NaN,它将保持不变

    展开全文
  • js判断对象属性是否存在的方法

    千次阅读 2018-08-31 09:49:49
    判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式。 一、点( . )或者方括号( [ ] )  通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。当然,这里的“不...
  • 对于 一级的object 可用: in hasOwnProperty() 那对于 多级 的思考呢: { value: "zhinan", label: "指南", name: 'lxf', children: [ { value: "shejiyuanze", label: "设计原则", adress: 'mb',
  • 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...
  • JS 判断对象属性是否存在判断是否包含某个属性,是否为自身属性 判断是否包含对象 我们知道访问对象属性有两种形式,如下: var obj = { name:'听风是风' }; obj.name; //听风是风 obj['name']; //听风是风 ...
  • javascript里面还不能直接判断是不是Null 不能,写if(.prop == null ) js所谓动态语言,”高级”语言,还是有很多方法的 if(obj.textItem.hasOwnProperty("font")==false) alert("字体层可能为空 by "+obj....
  • javascript判断对象是否拥有属性这个用法在使用中经常发生,下面讲解下javascript判断对象属性是否存在的两种方法 1,in运算符 var obj = {name:'jack'}; alert('name' in obj); // --> true alert('...
  • 判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式。 一、点( . )或者方括号( [ ] )  通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。当然,这里的“不存在...
  • 判断localStorage.getItem属性是否存在if (localStorage.getItem("key") != null) {//自定义代码alert('key 存在')}else{alert('key 不存在')}if (localStorage.getItem("key") != null) {//自定义代码alert('key ...
  • 小程序中js判断对象属性是否存在

    千次阅读 2020-07-08 14:39:00
    小程序中js判断对象属性是否存在? 在小程序开发过程中,调用接口返回的数据,有数据返回是正常的,没有数据返回时有错误提示,需要验证下返回的记录集中是否存在对应的属性,做记录备用; 实例代码: if(typeof res...
  • 下面本篇就来给大家介绍几种使用javascript判断对象是否包含有某属性的常见方法,希望对大家有所帮助。一、使用“!==”“!==”方法在工作中很常见,可以看出该方法可以判断继承来的属性。let obj = { x: 1 };obj.x...
  • 判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式。 一、点( . )或者方括号( [ ] )  通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。当然,这里的“不存在...
  • JavaScript 判断对象中是否有某属性  判断对象中是否有某属性的常见方式总结,不同的场景要使用不同的方式。 一、点( . )或者方括号( [ ] )  通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,...
  • 为了验证,在构造函数中添加属性,在原型中添加属性,给实例化对象添加属性 // 创建构造函数 function Person() { // 添加属性到构造函数中 ...判断实例化对象p1是否含有某属性,使用 in 操作符。有,返回tru
  • function functiontofindIndexByKeyValue(arraytosearch, key, ... scoreList[flag].point = point } else{ console.log('teammateId不存在'); this.data.scoreList.push(mate) } ```## 标题`在这里插入代码片`
  • hasOwnProperty 用来判断...hasOwnProperty 是 JavaScript 中唯一一个处理属性但是不查找原型链的函数。 注意:通过判断一个属性是否undefined是不够的。 因为一个属性可能确实存在,只不过它的值被设置为undefined。.
  • var myDisabled=$(obj).is(’[myDisabled]’)?‘myDisabled’:’’;
  • js判断某元素是否有指定属性

    万次阅读 2018-04-11 09:17:29
    1、element.hasAttribute(‘属性名’); 如果存在指定属性,则返回 true,否则返回 false。ie8及以下不支持 如下:这是一个段落 var box=document.getElementById("box"); var attr=box.hasAttribute('c
  • 我们在使用对象的时候,通过点或方括号可以获取对象的属性值,如果该对象自身不存在这个属性,就会返回undefined。 var obj={ name:"小破船", doWhat:"借箭" }; console.log(obj.name);//小破船 console....
  • 访问元素属性 getAttribute 不存在返回null,特性名可不区分大小写 dom对象访问公共属性,自定义属性不能访问,div.id访问对象属性 ... //true,自有属性存在 “y” in o; //false “toString” in o;

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 52,915
精华内容 21,166
关键字:

js判断某属性存在