JavaScript中的几种模式

1.工厂模式

function createDog(name,age){
    var d = new Object();
    d.name = name;
    d.age = age;
    d.sayName = function(){
        console.log(this.name);
    }
    return d;
}

2.构造函数模式

function Dog(name,age){
    this.name = name;
    this.age = age;
    this.sayName = function(){
        console.log(this.name);
    };
}
//下面看看几种使用方式
//当做构造函数使用
var d1 = new Dog("Sunli","28");
d1.sayName();

//当做普通函数调用
/*当在全局作用域中调用一个函时,
 *this 对象总是指向GLobal对象
 *在浏览器中就是window对象
 */
Dog("Sunli","28");
window.sayName();

//在另一个对象作用域中调用
var d = new Object();
Dog.call(d,"Sunli","28");
d.sayName();

但构造函数模式存在一个问题,由于在创造对象的时候,每一个新建的对象都是一个实例,这时候,每个方法都要在实例上重新创建一边,但由于这都是同样的一个方法,本质上来说我们希望的是同一个Function实例就可以解决的
原则上可以考虑以下的解决办法。

function Dog(name,age){
    this.name = name;
    this.age = age;
    this.sayName = sayName;
}
var sayName = function(){
        console.log(this.name);
}

但对于封装性来说,sayName作为全局的调用只供Dog来使用,有违全局作用域的初衷,所以,我们可以考虑使用构造函数模式+原型链的模式来创建对象.

4.组合使用构造函数+原型的模式

function Dog(name,age){
    this.name = name;
    this.age = age;
}
Dop.prototype = {
    constructor : Dog,
    sayName :function(){
        console.log(this.name);
    }
}
var d = new Dog("sunli",'28');
d.sayName();
var d1 = new Dog("sunliabc",'28');
d1.sayName();
//sayName是所有实例都能共享的一个方法

此方法是使用最广泛的,认可度最高的

第1章 简介   模式   JavaScript:基本概念   ECMAScript 5   JSLint   Console   第2章 基本技巧   编写可维护的代码   尽量少用全局变量   for循环   for-in循环   不要增加内置的原型   SWitch模式   避免使用隐式类型转换   使用parseInt()的数值约定   编码约定   命名约定   编写注释   编写API文档   编写可读性强的代码   同行互查   在正式发布时精简代码   运行JSLint   小结   第3章 字面量和构造函数   对象字面量   自定义构造函数   强制使用new的模式   数组字面量   JSON   正则表达式字面量   基本值类型包装器   错误对象   小结   第4章 函数   背景   回调模式   返回函数   自定义函数   即时函数   即时对象初始化   初始化时分支   函数属性——备忘模式   配置对象   Curry   小结   第5章 对象创建模式   命名空间模式   声明依赖关系   私有属性和方法   模块模式   沙箱模式   静态成员   对象常量   链模式   method()方法   小结   第6章 代码复用模式   传统与现代继承模式的比较   使用类式继承时的预期结果   类式继承模式#1——默认模式   类式继承模式#2——借用构造函数   类式继承模式#3——借用和设置原型   类式继承模式#4——共享原型   类式继承模式#5——临时构造函数   Klass   原型继承   通过复制属性实现继承   借用方法   小结   第7章 设计模式   单体模式   工厂模式   迭代器模式   装饰者模式   策略模式   外观模式   代理模式   介者模式   观察者模式   小结   第8章 DOM和浏览器模式   关注分离   DOM脚本   事件   长期运行脚本   远程脚本   配置JavaScript   载入策略
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值