2021-12-05【技术】JavaScript 面向对象和如何判断一个对象是否为空对象

JavaScript对象
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数等,此外,JavaScript 允许自定义对象。JavaScript 提供多个内建对象,比如 String、Date、Array 等等。

创建一个对象的几种方法:
1、常用字面量定义对象

var person = {
    name : "Jenny",
    age : 18,
    city : "广州市",
    greet : function (){
        console.log(this.name+this.age+this.city);
    }
}

2、我们也可以使用Object创建实例对象

var person = new Object();
person.name = "Maria";
person.age = 19,
person.city = "guangzhou";
person.greet = function(){
    console.log(this.name+this.age+this.city);
}

PS:对象只是一种特殊的数据。对象拥有属性和方法。

原型对象

JavaScript 是面向对象的语言,JavaScript 基于 prototype 原型,而不是基于类的。原型对象使用ObjectName.prototype.propertyName的语法访问和修改值、使用ObjectName.prototype.methodName语法调用和修改方法。原型对象的属性和方法被其原型链上的子对象继承。

function Person(name,age){
    this.name = name;
    this.age = age;
}
Person.prototype.city = "广州";
Person.prototype.greet = function (){
    console.log(this.name+this.age+this.city);
}
var person = new Person("Jenny",18);
console.log(person.city);//广州
var person2 = new Person("Maria",19);
console.log(person2.city);//广州
person.greet();//Jenny18广州
person2.greet();//Maria19广州

遍历对象

javascript for...in 语句循环遍历对象的属性, for...in 循环中的代码块将针对每个属性执行一次。

var person = {
    name : "Jenny",
    age : 18,
    city : "广州",
    greet : function (){
        console.log(this.name+this.age+this.city);
    }
}
for (let item in person){
    console.log(person[item]);
}
//Jenny
//18
//广州
//f(){console.log(this.name+this.age+this.city);}

那么,如何判断一个对象是否为空对象呢?

1.最常见的思路,for...in... 遍历属性,为真则为“非空数组”;否则为“空数组”

for (let key in obj) { // 如果不为空,则会执行到这一步,返回true
    return true
}
return false // 如果为空,返回false

2.通过 JSON 自带的 stringify() 方法来判断:

JSON.stringify() 方法用于将 JavaScript 值转换为 JSON 字符串。

if (JSON.stringify(data) === '{}') {
    return false // 如果为空,返回false
}
return true // 如果不为空,则会执行到这一步,返回true

这里需要注意为什么不用 toString(),因为它返回的不是我们需要的,例如:

var a = {}
a.toString() // "[object Object]"

3.ES6 新增的方法 Object.keys():

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组。
如果我们的对象为空,他会返回一个空数组,如下:
var a = {}
Object.keys(a) // []

因此,我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空,例如:

if (Object.keys(object).length === 0) {
    return false // 如果为空,返回false
}
return true // 如果不为空,则会执行到这一步,返回true

你可能感兴趣的:(2021-12-05【技术】JavaScript 面向对象和如何判断一个对象是否为空对象)