对象概述
- 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所有拥有的属性(无论是否可枚举)的名称。
- for...in循环:该方法访问一个对象及其原型链中所有可枚举的属性。
创建新对象
使用对象初始化器
var myHonda = {color: "red", wheels: 4, engine: {cylinders: 4, size: 2.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对象找到。
网友评论