对象

JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...

此外,JavaScript 允许自定义对象。

JavaScript 提供多个内建对象,比如 String、Date、Array 等等。

对象只是带有属性和方法的特殊数据类型。

对象的属性

属性是与对象相关的值。

访问对象属性的语法是:

objectName.propertyName

比如我们可以获取 String 对象的长度

var message="Hello World!";
console.log(message.length); // 12

对象的方法

方法是能够在对象上执行的动作。

访问对象方法的语法是:

objectName.methodName()

使用 String 对象的 toUpperCase() 方法来将文本转换为大写:

var message="Hello world!";
console.log(message.toUpperCase());

创建对象

直接创建

创建对象的一个新实例,并向其添加了四个属性:

person=new Object(); // 或者使用 {}
person.firstname="Bill";
person.lastname="Gates";
person.age=56;
person.eyecolor="blue";

字面量

我们也可以用过字面量来创建对象:

person={firstname:"John",lastname:"Doe",age:50,eyecolor:"blue"};

对象构造器

对于比较复杂的对象,我们可以使用函数来构造对象

function Person(firstname,lastname,age,eyecolor){
  this.firstname=firstname;
  this.lastname=lastname;
  this.age=age;
  this.eyecolor=eyecolor;
}

有了对象构造器,我们就可以使用new来创建新的对象

var myFather=new Person("Bill","Gates",56,"blue");
var myMother=new Person("Steve","Jobs",48,"green");

ES5中没有类的概念,一把使用函数构造器充当类的声明。

作为初学者,以下代码:

function Person(firstname,lastname,age,eyecolor){
  this.firstname=firstname;
  this.lastname=lastname;
  this.age=age;
  this.eyecolor=eyecolor;
}
var myFather=new Person("Bill","Gates",56,"blue");

我们可以简单认为其等价于:

function Person(firstname,lastname,age,eyecolor){
  var obj = {}
  obj.firstname=firstname;
  obj.lastname=lastname;
  obj.age=age;
  obj.eyecolor=eyecolor;
  return obj;
}
var myFather = Person("Bill","Gates",56,"blue");

当然还有不一样的地方,我们将在原型链给大家讲解。

遍历对象属性

for...in 循环

var person={fname:"Bill",lname:"Gates",age:56};

for (x in person){
  console.log(x, person[x])
}

既然数组也是对象,数组可以使用类似的方法遍历所有元素

var arr = ["a", "b", "c"]

for (x in arr){
  console.log(x, arr[x])
}

我们可以看到多了一个 length 属性,这是因为 length 是 Array 对象属性,遍历对象属性把所有属性都遍历出来了。

getOwnPropertyNames

我们可以使用 Object.getOwnPropertyNames 获取对象的所有属性。

var person={fname:"Bill",lname:"Gates",age:56};
Object.getOwnPropertyNames(person) // ["fname", "lname", "age"]

我们可以用这办法获取对象的键,那如何获取属性的值那?

results matching ""

    No results matching ""