五、Objects

对象概述

  • javascript中的对象(物体),和其他编程语言中的对象一样,可以比照现实生活中的对象(物体)来理解它。javascript中对象(物体)的概念可以比照现实生活中实实在在的物体来理解。
    在javascript中,一个对象可以是一个单独的拥有属性和类型的实体。我们拿它和一个杯子做下类比。一个杯子是一个对象(物体),拥有属性。杯子有颜色,图案,重量,由什么材质构成等等。同样,javascript对象也有属性来定义它的特征。

对象和属性

  • 一个 javascript 对象有很多属性。一个对象的属性可以被解释成一个附加到对象上的变量。对象的属性和普通的 javascript 变量基本没什么区别,仅仅是属性属于某个对象。属性定义了对象的特征(译注:动态语言面向对象的鸭子类型)。你可以通过点符号来访问一个对象的属性。
    和其他 javascript 变量一样,对象的名字(可以是普通的变量)和属性的名字都是大小写敏感的。你可以在定义一个属性的时候就给它赋值。例如,我们创建一个myCar的对象然后给他三个属性,make,model,year。具体如下所示:
var myCar = new Object();
myCar.make = "Ford";
myCar.model = "Mustang";
myCar.year = 1969;
  • 对象中未赋值的属性的值为undefined(而不是null)。

  • 对象有时也被叫作关联数组, 因为每个属性都有一个用于访问它的字符串值。

myCar["make"] = "Ford";
myCar["model"] = "Mustang";
myCar["year"] = 1969;

枚举一个对象的所有属性

  • 从ES5开始,有三种原生的方法用于列出或枚举对象的属性。
    • for...in循环:该方法访问一个对象及其原型链中所有可枚举的属性。
      +Object.keys(o):该方法返回一个对象o自身包含
      +Object.getOwnPropertyNames(o):该方法返回一个数组,它包含了对象o所有拥有的属性(无论是否可枚举)的名称。

创建新对象

使用对象初始化器

var myHonda = {color: "red", wheels: 4, engine: {cylinders: 4, size: 2.2}};

使用构造函数

  1. 通过创建一个构造函数来定义对象的类型。首字母大写是非常普遍而且很恰当的惯用法。
  2. 通过new创建对象实例。
function Car(make, model, year) {
  this.make = make;
  this.model = model;
  this.year = year;
}
var mycar = new Car("Eagle", "Talon TSi", 1993);

使用Object.create方法

  • 对象也可以用Object.create()方法创建。该方法非常有用,因为它允许你为创建的对象选择其原型对象,而不用定义一个构造函数。
// Animal properties and method encapsulation
var Animal = {
  type: "Invertebrates", // Default value of properties
  displayType : function() {  // Method which will display type of Animal
    console.log(this.type);
  }
}

// Create new animal type called animal1 
var animal1 = Object.create(Animal);
animal1.displayType(); // Output:Invertebrates

// Create new animal type called Fishes
var fish = Object.create(Animal);
fish.type = "Fishes";
fish.displayType(); // Output:Fishes

继承

  • 所有的JavaScript对象继承于至少一个对象。被继承的对象被称作原型,并且继承的属性可通过构造函数的prototype对象找到。

你可能感兴趣的:(五、Objects)