javascript定义方法的四种途径

最近在看一本名叫《javascript设计模式》的书,感觉还不错,记录一些学习内容当作读书笔记。

第一章讲的是javascript的灵活性,用四种不同的方法实现同一件事情。

1,最常用的方式,但是无法保存状态

/*开始和结束动画*/
function startAnimation(){
    ...
}
function stopAnimation(){
    ...
}


2,定一个类

/*定义类*/
var Anim = function(){
    ...
};
Anim.prototype.start = function (){
    ...
};
Anim.prototype.stop = function (){
    ...
};
/*实例化类*/
var myAnim = new Anim();
myAnim.start();
...
myAnim.stop();

3,把方法的定义封装到声明中

/*定义一个类,并把方法封装到声明中*/
var Anim = function(){
    ...
};
Anim.prototype = {
    start: function(){
        ...
    },
    stop: function(){
        ...
    }
};

4,定义一个专门添加方法的方法Function.prototype.method。它有两个参数,第一个参数是字符串,表示新方法的方法名;第二个是用作新方法的函数。

/*给Function添加一个用来加方法的method方法*/
Function.prototype.method = function(name, fn) {
    this.prototype[name] = fn;
};
/*定义一个类,用method方法为它添加新方法*/
var Anim = function(){
    ...
}
Anim.method('start', function(){
    ...
});
Anim.method('stop', function(){
    ...
});

当然,这种方法还能实现链式调用

/*给Function添加一个用来加方法的method方法*/
Function.prototype.method = function(name, fn) {
    this.prototype[name] = fn;
    return this;
};
/*定义一个类,用method方法为它添加新方法*/
var Anim = function(){
    ...
}
Anim.method('start', function(){
    ...
}).method('stop', function(){
    ...
});

有3条关于 “javascript定义方法的四种途径” 的评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>