javascript面向对象和原型
2016-04-24 11:17
627 查看
模式
动态原型
工厂模型
寄生构造函数模型
稳妥构造函数模型
//构造函数+原型模型 function Box(name,age){ //保持独立的用构造函数 this.name=name; this.age=age; this.family=['哥哥','姐姐','弟弟']; } Box.prototype={ //保持共享的用原型模型 constructor:Box, run:function(){ return this.name + this.age + this.family; } } var box1 = new Box('Lee',100); // alert(box1.run()); box1.family.push('妹妹'); alert(box1.family); var box2 = new Box('Jack',200); // alert(box2.run()); alert(box2.family); //引用类型没有使用原型,所以没有共享
动态原型
//动态原型模型,可以将原型封装到原型,每次运行都要初始化一次 function Box(name,age){ this.name=name; this.age=age; this.family=['哥哥','姐姐','弟弟']; // alert("原型初始化开始"); // Box.prototype.run = function(){ // return this.name + this.age + this.family; // } // alert("原型初始化结束"); if(typeof this.run != 'function'){ //判断run是否存在,即是否已初始化 alert("原型初始化开始"); Box.prototype.run = function(){ return this.name + this.age + this.family; } alert("原型初始化结束"); } } var box1 = new Box('Lee',100); alert(box1.run()); var box2 = new Box('Jack',200); alert(box2.run());
工厂模型
工厂模式 function Object(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.run = function(){ } return obj; }
寄生构造函数模型
//寄生构造函数模式 function Box(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.run = function(){ return name + age; } return obj; }
稳妥构造函数模型
//稳妥构造函数,函数体不能用this,实例化不能用new function Box(name,age){ var obj = new Object(); obj.name = name; obj.age = age; obj.run = function(){ return name + age; } return obj; } var box1 = Box('Lee',100); alert(box1.run());
相关文章推荐
- 关于改善js语言编程质量的个人小结之减少全局变量污染
- web项目中servlet跳转jsp页面 出现乱码
- Javascript面向对象编程(二):构造函数的继承
- Javascript 面向对象编程(一):封装
- js一些通用方法的封装
- js封装的方法
- JavaScript严格模式详解
- JSON Models Example
- Qml 中模型数据加载的ThreeLoader.js
- JS设计模式之单例模式篇
- 从javascript一道闭包面试题说开去
- JavaScript的核心
- JavaScript中的数据类型检测问题
- javascript 正则表达式语法
- bzoj 1821: [JSOI2010]Group 部落划分 Group
- 浅谈js中的执行环境和执行环境对象
- javascript 正则表达式 反向引用
- 基础 JavaScript 装逼指南
- 数组排序-包含json数据格式的数组
- 深夜课堂:JavaScript基本概念