对象

创建对象

JavaScript 创建对象的方法的产生是一个迭代的过程,因为已有方法的缺陷催生出了新的方法。
在这里我们先学习两种最基础的创建对象的方法,让我们能够对对象有一个初步的了解。

Object构造函数

var person = new Object();

字面量方式

var person = {};

对象的属性(property)

 

一个 JavaScript 对象可以有多个属性,每个属性或方法都有一个名字,我们叫做属性名,而每一个属性名都 对应着一个属性值。所以,对象的本质就是无序属性的集合,每一个属性都是一组键(属性名)值(属性 值)对,值可以是数据或者函数。一个对象中的每一个属性名都必须是唯一的。

对象属性的分类

数据属性:一般用于存储数据值。

访问器属性:不包含数据值,多用于get/set操作。

定义对象的数据属性

通过点运算符来操作一个对象的属性

var person = {
      name: "lisi",
      job: "SoftWare Engineer"
};
person.name = "zhangsan";
person.age = 30;
console.log(person.job);

通过[]操作一个对象的属性

1 var person = {
2       name: "lisi",
3       job: "SoftWare Engineer"
4 };
5 person[name] = "zhangsan";
6 person[age] = 30;
7 console.log(person["job"]);

删除对象的数据属性

可以用delete操作符删除一个不是继承而来的属性。

var person = {
      name: "lisi",
      job: "SoftWare Engineer"
};

delete person.job;

对象的方法

定义对象的方法

定义对象的方法就像定义普通函数,唯一的区别是对象里的方法必须被赋给对象的某个属性。

//方式一

var person = {
      name: "lisi";
      sayName: function(){
            console.log("my name is " + this.name);
       }
};

//方式二
var person = new Object();
person.sayName = function(){
      console.log(" my name is " + this.name);
}

调用对象的方法

对象方法的调用类似于对象属性的调用,同样具有以下两种方式

通过点运算符,来访问一个对象的方法

var person = {
      name: "lisi";
      sayName: function(){
            console.log"my name is " + this.name);
}'

person.sayName();  //调用 person 对象的sayName方法

通过[]来访问一个对象的方法

var person = {
      name: "lisi";
      sayName: function(){
            console.log("my name is " + this.name);
}'

person["sayName"]();  //调用 person 对象的sayName方法

删除对象的方法

可以用delete操作符删除对象的方法

var person = {
      name: "lisi";
      sayName: function(){
            console.log"my name is " + this.name);
}'

delete person.sayName;  //方法名后面没有()

对象的遍历

for in循环

该方法依次访问一个对象及其原型链中所有可枚举的属性。
上面这句句话里,有两个词我们现在可能还不不太明白:原型链、可枚举。这两个概念我们后面都会讲,现在不不 能明白没关系,不影响我们理理解对象的遍历。

for(let key in person) {
     console.log(key);                //name age job                    
     console.log(person[key]);  //zhangsan 20 Doctor
}    

 

注意:当我们通过属性名 key 去获取属性值时,只能用中括号 [] ,不能用点运算符 .

Object.keys(Object)

 

var person = {
      name: "zhangsan",
      age: 20,
      job: "Doctor"
}

var arr = Object.keys(person);                //["name","age","job"]

for(let i = 0; i< arr.length; i++) {
      console.log(person[arr[i]]);              //zhangsan 20 Doctor
}

 

该方法返回一个数组,这个数组里包含了了当前对象自身的所有属性(不不包括原型中)的名称。

 

posted @ 2017-07-30 02:35  a'ゞゞ阿猫阿狗  阅读(125)  评论(0编辑  收藏  举报