一、前言
JavaScript对象是属性的集合,其中每个属性都具有名称和值,属性的名称可以是任何字符串,包括空字符串。值可以是任何值,例如字符串,布尔值,数字和null,但不能是未定义的。
属性值不限于基本类型,如数字或字符串; 您还可以添加其他对象的属性,包括函数。将函数添加到对象时,它称为方法。
二、正文
1.访问属性
可以通过两种方式之一检索属性值; 点符号和括号表示法。
var rect = { width: 20, height: 10 };
alert(rect.width); // => 20 (点符合dot notation)
alert(rect["width"]); // => 20 (括号表示法bracket notation)
2.用for-in 获取属性Getting property names with for-in
var car = { make: "Toyota", model: "Camry" };
for (var prop in car) {
// => make: Toyota, and model: Camry
alert(prop + ": " + car[prop]);
}
3.使用构造函数创建对象Creating objects with constructor functions
function Book(isbn) {
this.isbn = isbn;
}
Book.prototype.getIsbn = function () {
return "Isbn is " + this.isbn;
};
var book = new Book("901-3865");
alert(book.getIsbn()); // => Isbn is 901-3865
4.The value of this
function Circle(radius) {
this.radius = radius;
}
Circle.prototype.getRadius = function() {
return this.radius;
}
var smallCircle = new Circle(5);
alert(smallCircle.getRadius()); // => 5
var largeCircle = new Circle(100);
alert(largeCircle.getRadius()); // => 100
5.原型继承Prototypal inheritance
原型对象本身具有原型,这导致原型链。对象从原型链中的对象继承属性的过程称为原型继承。该模型比传统继承更简单,更小,冗余更少。
我们使用bank属性和getBank方法创建一个帐户对象。该对象将作为其他对象的原型,如储蓄,检查等。
var account = {
bank: "Bank of America", // default value
getBank: function() {
return this.bank;
}
};
var savings = Object.create(account);
alert(savings.bank); // => Bank of America
createObject接受一个原型对象作为参数,名为p,并返回一个新对象(一个真正的函数对象),其prototype属性设置为传入的原型对象。prototype属性是JavaScript如何跟踪对象的原型链。
function createObject (p) {
var F = function () {}; // Create a new and empty function
F.prototype = p;
return new F();
}