javascript,检测对象中是否存在某个属性

检测对象中属性的存在与否可以通过几种方法来判断。

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,它将保持不变
时间: 2024-10-12 14:46:58

javascript,检测对象中是否存在某个属性的相关文章

JavaScript 判断对象中是否有某属性

因为后端返回一个对象后,这个对象经常会出现缺少属性的情况 一个解决方法就是接受到数据后判断对象中是否有该属性,无的话加上属性和默认值 那么如何判断是否有该属性呢: test.hasOwnProperty('name') //true 自身属性 test.hasOwnProperty('age') //false 不存在 test.hasOwnProperty('toString') //false 原型链上属性 使用hasOwnProperty()就很容易知道了. 原文地址:https://ww

js检测对象中是否存在某个属性

1.使用in关键字.该方法可以判断对象的自有属性和继承来的属性是否存在. 2.使用对象的hasOwnProperty()方法.该方法只能判断自有属性是否存在,对于继承属性会返回false. 3.用undefined判断.自有属性和继承属性均可判断,如果属性的值就是undefined的话,该方法不能返回想要的结果. 4.在条件语句中直接判断.如果x是undefine,null,false," ",0或NaN,它将保持不变

JavaScript 判断对象中是否有某属性的常用方法

一.点(.)或方框号([ ]) var obj = { test: '123' } obj.test obj['test'] 二.in 运算符 var obj = { test: '123' } test in obj 三.hasOwnProperty() var obj = { test: '123' } obj.hasOwnProperty('test') 原文地址:https://www.cnblogs.com/hyshi/p/11679396.html

javascript Arguments对象之length、callee属性

1.length属性,我们可以利用Arguments对象的length属性来获取实际传递进的参数有几个. function a(x, y, z) { //arguments.callee指向函数a(),arguments.callee.length==a.length; alert(arguments.callee.length); //输出5 alert(arguments.length); if (arguments.callee.length != arguments.length) {

(一)数组或对象中最会一个属性是否该加逗号的测试

1.结论:在IE8中有兼容问题.会将逗号后面的空也算作一个属性,所以最后一个属性末不要加逗号 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> </body> <script src="lib

JavaScript基础对象创建模式之私有属性和方法(024)

JavaScript没有特殊的语法来表示对象的私有属性和方法,默认的情况下,所有的属性和方法都是公有的.如下面用字面声明的对象: var myobj = { myprop: 1, getProp: function () { return this.myprop; } }; console.log(myobj.myprop); // `myprop` is publicly accessible console.log(myobj.getProp()); // getProp() is publ

JavaScript秘密花园]对象其一:使用和属性

JavaScript 中所有变量都是对象,除了两个例外 null 和 undefined. false.toString() // 'false' [1, 2, 3].toString(); // '1,2,3' function Foo(){} 澳门威尼斯人赌场Foo.bar = 1; Foo.bar; // 1 输出 false.toString() : 输出 [1, 2, 3].toString(); : 输出 function Foo(){} 并赋值的结果: 一个常见的误解是数字的字面值

Vue.set 向响应式对象中添加响应式属性,及设置数组元素触发视图更新

一.为什么需要使用Vue.set? vue中不能检测到数组和对象的两种变化: 1.数组长度的变化 vm.arr.length = 4 2.数组通过索引值修改内容 vm.arr[1] = ‘aa’ Vue.$set(target,key,value):可以动态的给数组.对象添加和修改数据,并更新视图中数据的显示. vue在构造函数new Vue()时,就通过Object.defineProperty中的getter和setter 这两个方法,完成了对数据的绑定.所以直接通过vm.arr[1] =

python中利用少量代码快速实现从类对象中抽取所需属性的一种实践

项目中有可能会碰到这样一种场景: 根据一个id,查询得到和id对应的完整数据信息存储对象,比如书籍id到书籍详细信息,用户id到用户详细信息等,详细信息字段可能包括几十甚至上百个数据字段,真正需要返回给调用方的字段实际上却只占其中一小部分,这是出于性能和带宽的考虑(甚至在有些场景中,处于隐私或者安全考虑,强制要求不能返回非协议定义的信息字段,比如第三方登录一般只返回用户昵称.性别等少量信息),一般会从详细的数据对象中抽取出所需要的信息组装一个新的简化对象. 今天碰到这样一个问题,需要将一个存储多