js面向对象创建
2016-03-29 11:08
477 查看
混合的构造函数/原型方式
联合使用构造函数和原型方式,就可像用其他程序设计语言一样创建对象。这种概念非常简单,即用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)。结果是,所有函数都只创建一次,而每个对象都具有自己的对象属性实例。我们重写了前面的例子,代码如下:
function Car(sColor,iDoors,iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array("Mike","John"); } Car.prototype.showColor = function() { alert(this.color); }; var oCar1 = new Car("red",4,23); var oCar2 = new Car("blue",3,25); oCar1.drivers.push("Bill"); alert(oCar1.drivers); //输出 "Mike,John,Bill" alert(oCar2.drivers); //输出 "Mike,John"
现在就更像创建一般对象了。所有的非函数属性都在构造函数中创建,意味着又能够用构造函数的参数赋予属性默认值了。因为只创建 showColor() 函数的一个实例,所以没有内存浪费。此外,给 oCar1 的 drivers 数组添加 "Bill" 值,不会影响到 oCar2 的数组,所以输出这些数组的值时,oCar1.drivers 显示的是 "Mike,John,Bill",而 oCar2.drivers 显示的是 "Mike,John"。因为使用了原型方式,所以仍然能利用 instanceof 运算符来判断对象的类型。这种方式是 ECMAScript 采用的主要方式,它具有其他方式的特性,却没有他们的副作用。
相关文章推荐
- js调试工具Console命令详解——转
- javaScript——&
- jsp中<basePath>问题
- JavaScript正则表达式(总结篇)
- JS中匿名函数$(function(){ })和(function(){})()的区别
- MVC项目中使用js 设置Checkbox的选中事件
- Package.json中dependencies依赖包中^符号和~符号前缀的区别
- C#将XML与JSON数据的互相转换
- 原生JS写的一个瀑布流布局-------------提示:需放到服务器下才能运行(XAMPP服务器等)
- JSP的八个内置对象
- js 字符串转换数字
- JSONArray 合并相同的数据
- JSP内置对象
- js中创建form表单
- JS闭包回调的理解
- DWZ框架分页控件中遇到的问题
- jsp显示doc,xls,jpg
- 写复杂的json方法
- HTML5 audio标签使用js进行播放控制实例
- JavaScript中将金钱格式化