JavaScript对象

定义

JavaScript 中的所有都是对象。对象是一种特殊的数据,拥有属性和方法(即对象成员)。

创建对象的方式

对象字面量

1
var person = {
2
  name:'张三',
3
  age:23,
4
  say:function() {
5
    console.log('hello,my name is '+this.name)
6
  }
7
}
8
person.say();

new Object() 构造函数

1
var person = new Object();  //创建一个空对象
2
//设置属性
3
person.name = '张三';
4
//设置方法
5
person.say = function() {
6
   console.log('hello,my name is '+this.name)
7
}
8
person.say();

自定义构造函数 - 对象构造器 - 工厂方法

1
function Person(name,age) {
2
  this.name = name;
3
  this.age = age;
4
  this.say = function() {
5
      console.log('hello,my name is '+this.name)
6
    }
7
}
8
var person1 = new Person('张三',22)

关键字 new

new 的执行过程:

  1. 在内存中创建一个空对象
  2. 让构造函数中的this执行创建的对象
  3. 执行构造函数,在构造函数中设置属性和方法
  4. 返回当前对象

对象遍历的方法

for…in 循环

1
var person={firstName:"John",lastName:"Doe",age:25}; 
2
for (value in person) {
3
  console.log(value);
4
}

Object.keys()

返回对象所有可枚举属性的字符串数组。

1
var person={firstName:"John",lastName:"Doe",age:25}; 
2
var arr = Object.keys(person)
3
console.log(arr);

Object.values()

返回对象自身的所有可枚举属性值的数组。

1
var person={firstName:"John",lastName:"Doe",age:25}; 
2
console.log(Object.values(person));

Object.getOwnPropertyNames

返回对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

1
var arr = ["a", "b", "c"];
2
console.log(Object.getOwnPropertyNames(arr).sort());

删除对象的成员

1
var person={firstName:"John",lastName:"Doe",age:25}; 
2
console.log(person);
3
delete person.age;
4
console.log(person);

继承

1
var father = {
2
  name:"张三",
3
  age:50,
4
  houses:['别墅','公寓'],
5
  play:function() {
6
    console.log('运动');
7
  }
8
}
9
10
var son = {
11
   name:"张四",
12
}