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