js判断对象的几种方法

JavaScript010

js判断对象的几种方法,第1张

1、for in 循环

eg:var obj = {}

        var b = function () {

            for (var key in obj) {

                return false

            }

            return true

        }

        console.log(b())  // true

2、对象序列化(将对象转换为字符串)后进行判断

eg:var data = {}

        var b = (JSON.stringify(data) == "{}")

        console.log(b)  // true

3、jquery的isEmptyObject()方法

eg:  var data = {}

        var b = $.isEmptyObject(data)

        console.log(b)  // true

4、Object.getOwnPropertyNames()方法

eg:  var data = {}

        var arr = Object.getOwnPropertyNames(data)

        console.log(arr.length == 0)  // true

5、ES6中的Object.keys()方法

eg:  var data = {}

        var arr = Object.keys(data)

        console.log(arr.length == 0)  // true

     一种是通过字面量的形式创建(语法糖):let obj = {}  

     另外一种就是通过new Object()构造器函数的形式创建。对象字面量的声明方式比构造器函数更加方便。

    通过delete操作符, 可以实现对对象属性的删除操作, 返回值是布尔值

    通过点或者方括号可以获取对象的属性值,如果对象上不存在该属性,则会返回undefined。

    点获取对象属性值其实是通过."属性名"(属性名是字符串)和["属性名"]一样但和[变量名]不同此时是通过变量的值为属性名访问对象 

    属性名可以通过in操作符,如果指定的属性在指定的对象或其原型链中,则in 运算符返回true。这种方式的局限性就是无法区分自身和原型链上的属性,在只需要判断自身属性是否存在时,这种方式就不适用了。

    hasOwnProperty()只有自身存在该属性时,才会返回true。适用于只判断自身属性的场景。

    Object.assgin("目标对象","源对象"),可以通过assgin给对象一次增加多个属性

    let obj = {}Object.assgin(obj,{a:1,b:2})

    也可以通过点或者方括号修改对象的属性,注意点和查看对象一样

    两个都可以查看name是否为obj的属性,in操作符可以查看name属性是否为obj的属性,但是除了会查找自身有没有这个属性还会查找原型链上是否有这个属性,hasOwnProperty只会在自身上查找这个属性。