JS模拟面向对象
JS模拟面向对象
by kixi
CSS
/*
清晰网
kixi.com.cn
从javascript开始
*/
JavaScript
//面向对象的精髓是对事物的抽象和继承,以到达代码重用的目的。然而在 JavaScript 中如何做到这一点呢?
//在 JavaScript 中每一个 object 都有一个 prototype 属性,这个属性引用了另一个 object 对象。当你需要读取一个 object 中的某个属性 p 时,JavaScript 引擎首先会查找这个 object 中是否存在属性 p。如果该属性存在则返回该属性值,如果该属性不存在则会在这个 object 的 prototype 对象中查找是否存在属性 p。这样做会有两点好处:第一,在每个类中可以抽象出来一些共有的属性和方法定义在 prototype 对象中。当使用构造函数创建多个类的实例时,多个实例使用同一 prototype 对象,这样大大减小了对内存的占用量。第二,新创建的对象的属性是在对象创建时,由 prototype 对象带来的,这样就可以实现属性和方法的继承了。
function Rectangle(w, h) {
this.width = w;
this.height = h;
this.area = function () {
return this.width * this.height;
};
}
var rect1 = new Rectangle(2, 4);
alert(rect1.area());