最近我开始学习 Javascript,因为我来自 Java 世界。我得到了这本书,名为JavaScript The Definitive guide。. 我现在对原型和继承有点困惑。我想知道将函数设置为对象属性和函数原型有什么区别。从书中的例子:
function Rectangle(w, h) {
this.width = w;
this.height = h;
this.area = function( ) { return this.width * this.height; }
}
使用这个新版本的构造函数,您可以编写如下代码:
// How big is a sheet of U.S. Letter paper in square inches?
var r = new Rectangle(8.5, 11);
var a = r.area( );
该解决方案效果更好,但仍然不是最佳的(为什么)。创建的每个矩形都将具有三个属性(是的,那又如何?)。每个矩形的 width 和 height 属性可能不同,但每个 Rectangle 对象的面积总是指同一个函数(当然有人可能会更改它,但您通常希望对象的方法保持不变)。对旨在由同一类的所有对象共享的方法使用常规属性是低效的(为什么?有什么问题?)(即,使用相同的构造函数创建的所有对象)。