面向对象与原型二
来源:互联网 发布:c语言贪吃蛇程序设计 编辑:程序博客网 时间:2024/06/05 02:06
构造函数+原型模式
为了解决构造函数传参和共享问题,衍生出组合构造函数+原型模式。简而言之就是需要独立的部分用构造函数,需要共享的部分用原型。
优点:这种模式很好的解决了传参和引用共享的大难题。是创建对象比较好的方法。
function Box(name, age) {//不共享的使用构造函数 this.name = name; this.age = age; this. family = ['父亲', '母亲', '妹妹'];};Box.prototype = {//共享的使用原型模式 constructor : Box, run : function () { return this.name + this.age; }};var box1=new Box('lee',100);alert(box1.run());//lee100box1.family.push('哥哥');//在实例中添加'哥哥'alert(box1.family());//['父亲', '母亲', '妹妹','哥哥']var box2=new Box('jack',200);alert(box2.run());//jack200alert(box2.family());//['父亲', '母亲', '妹妹']
动态原型模式
动态原型模式是组合构造函数+原型模式封装后的形式
将原型封装到构造函数中
function Box(name ,age) {//将所有信息封装到函数体内 this.name = name; this.age = age; if (typeof this.run != 'function') {//仅在第一次调用的初始化 Box.prototype.run = function () { return this.name + this.age + '运行中...'; }; }}var box = new Box('Lee', 100);alert(box.run());
PS:使用组合构造函数+原型模式,动态原型模式,要注意一点,不可以再使用字面量的方式重写原型,因为会切断实例和新原型之间的联系。
寄生构造模式(工厂模式+构造函数模式)
function Box(name ,age) {//将所有信息封装到函数体内 var obj=new Object(); obj.name = name; obj.age = age; obj.run=function(){ return this.name+this.age; } return obj;}
稳妥构造函数
在一些安全环境中,比如禁止使用this
和new
。这里的this
是构造函数里不能使用this
,这里的new
是外部实例化构造函数时不使用new
,这种创建方式就叫稳妥构造函数
function Box(name , age) { var obj = new Object(); obj.name = name; obj.age = age; obj.run = function () { return name + age + '运行中...';//直接打印参数即可 }; return obj;}var box = Box('Lee', 100);//直接调用函数alert(box.run());
PS:稳妥构造函数和寄生类似。只是稳妥构造函数不使用this
和new
阅读全文
0 0
- 面向对象与原型二
- 原型与面向对象
- 面向对象与原型
- JavaScript面向对象与原型
- js面向对象与原型
- Javascript面向对象与原型
- 面向对象与原型01
- 面向对象与原型02
- 面向对象与原型03
- 面向对象与原型04
- 面向对象与原型05
- 【JavaScript】面向对象与原型
- 面向对象与原型原稿
- JavaScript:面向对象与原型
- [15]面向对象与原型
- 面向对象与原型一
- 面向对象与原型三
- 面向对象与原型原稿
- pyCharm最新2017激活码
- sdut-离散题目3
- 面向对象与原型一
- 淘淘商城第十一天
- VI退出 退出VIM 适用新手
- 面向对象与原型二
- SpringMVCJSR-303规范进行校验简单示例
- linux下忘记mysql密码
- 面向对象与原型三
- 淘淘商城第十二天
- JavaPoet
- Educational Codeforces Round 9 Longest Subsequence 思维+筛法
- 淘淘商城第十三天
- POJ