构造函数方式
function Car(color,doors,mpg){
this.color = color;
this.doors = doors;
this.mpg = mpg;
this.showColor = function(){
alert(this.color + ' ' + this.doors + ' ' + this.mpg);
}
}
var oCar1 = new Car('red',4,23);
var oCar2 = new Car('blue',3,25);
oCar1.showColor();
oCar2.showColor();
你可能已经注意到第一个差别了,在构造函数内部无创建对象,而是使用this关键字。使用new运算符调用构造函数时,在执行第一行代码前就先创建出一个对象,然后才是执行构造函数,这与Java是一样的。在对象里面也只有用this才能访问该对象。this默认情况下是构造函数的返回值(不必明确使用return运算符)。
现在,用new运算符和类名Car创建对象,就更像创建ECMAScript中一般对象了。你也许会问,这种方式在管理函数方面是否存在与前一种方式相同的问题呢?是的。就像工厂函数,构造函数会重复生成函数,为每个对象都创建独立的函数版本。不过,与工厂函数相似,也可以用外部函数重写构造函数,同样的,语义上无任何意义。这就是原型方式的优势所在。
解决方案 »
- doSubmit后html:cancel按钮如何变有效???[
- 请教个问题163首页上的书签效果是怎么做到的啊
- javaScript 给已知层赋初值
- 哪位大虾遇到过通过js来跨域访问的问题
- 怎么样从表单中删除一个控件?
- 怎样用代码实现将某个文本框中的内容选中
- 如何在文档末尾追加一段HTML代码?或者如何在指定位置追加HTML代码?
- 我用XMLHTTP获取远程源文件为什么报错说没权限啊?
- 高德地图的点聚合方式
- EasyUI datagrid 300条记录 合并单元格效率问题
- 根据获得分辨率判断框架是否用滚动条,结果没执行起。各位看看代码有错没?
- 当执行一个对象里的函数时,怎么在这个函数里知道自己的函数名称
this.color = color;
this.doors = doors;
this.mpg = mpg;
}
Car.prototype.showColor(){
alert(this.color + ' ' + this.doors + ' ' + this.mpg);
}
var oCar1 = new Car('red',4,23);
var oCar2 = new Car('blue',3,25);
oCar1.showColor();
oCar2.showColor();
这样写每个实例都可以共享showColor这个方法,而不是每个实例重复创建showColor这个方法。