JavaScript 实现类的多种方法实例

 更新时间:2013年05月01日 14:30:27   作者:  
JavaScript 实现类的多种方法实例,需要的朋友可以参考一下

构造方法

复制代码 代码如下:

function coder()
{
    this.name = '现代魔法';
    this.job = 'Web 开发者';
    this.coding = function ()
    { alert('我正在写代码'); }
}

var coder = new coder();
alert(coder.name);
coder.coding();


工厂方法
复制代码 代码如下:

function createCoderFactory()
{
    var obj = new Object();
    obj.name = '现代魔法';
    obj.job = '程序员';
    obj.coding = function ()
    {
        alert('我正在写代码');
    };
    return obj;
}
var coder = createCoderFactory();
alert(coder.name);
coder.coding();

工厂方法和构造方法都有着一个相同的缺点,就是每创建一个实例,都会实例化该类的每个函数。

原型链

复制代码 代码如下:

function coder(){}
coder.prototype.name = '现代魔法';
coder.prototype.job = '程序员';
coder.prototype.coding = function(){
    alert('我正在写代码');
};
var coder = new coder();
alert(coder.name);
coder.coding();

原型链有个缺点就是它所有属性都共享,只要一个实例改变其他的都会跟着改变。如:

复制代码 代码如下:

var coder1 = new coder();
var coder2 = new coder();
alert(coder1.name);     /*显示现代魔法*/
coder2.name = 'nowamagic';
alert(coder1.name);     /*显示nowamagic*/
alert(coder2.name);     /*这个也显示nowamagic*/

混合方式
以上三种都有着各自的缺点,所以我们要加以改进。

复制代码 代码如下:

function coder()
{
    this.name = '现代魔法';
    this.job = '程序员';
}
coder.prototype.coding = function(){
    alert('我正在写代码');
};

动态原链
要解决前三种的缺点,还有一种方法。

复制代码 代码如下:

function coder()
{
    this.name = '现代魔法';
    this.job = '程序员';
    if (typeof(coder._init) == 'undefined')
    {
        this.coding = function ()
        {
            alert('我正在写代码');
        };
        this._init = true;
    }
}

相关文章

  • JavaScript快速调试的两个技巧

    JavaScript快速调试的两个技巧

    这篇文章主要给大家介绍了关于JavaScript快速调试的两个技巧,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • javascript使用中为什么10..toString()正常而10.toString()出错呢

    javascript使用中为什么10..toString()正常而10.toString()出错呢

    在JavaScript中为什么10..toString()正常,而10.toString()出错呢?这个问题一直困扰着我,所抽时间搜集整理下,晒出来与大家分享感兴趣的朋友可以了解下,希望对你们有帮助
    2013-01-01
  • 如何使用webpack打包一个库library的方法步骤

    如何使用webpack打包一个库library的方法步骤

    这篇文章主要介绍了如何使用webpack打包一个库library的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • Ionic学习日记实现验证码倒计时

    Ionic学习日记实现验证码倒计时

    本篇文章主要介绍了Ionic学习日记实现验证码倒计时,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-02-02
  • JavaScript 自动完成脚本整理(33个)

    JavaScript 自动完成脚本整理(33个)

    所谓的提升用户体验,其实就是把所有用户视为懒鬼,比如JavaScript自动完成(Autocomplete)脚本, 常用于表单,用户只需输入一两个字母,就为你扩展、联想、匹配和供君选择,
    2009-10-10
  • Electron实现右键保存图片到本地功能

    Electron实现右键保存图片到本地功能

    Electron是开发跨平台pc客户端的利器,最近在使用它时遇到一个需要右键保存页面中图片的功能,Electron虽使用了Chromium内核但却无法直接使用系统右键,需要自定义右键菜单,然后添加图片保存功能,以下是我的使用方法,需要的朋友可以参考下
    2024-07-07
  • 心扬JS分页函数代码

    心扬JS分页函数代码

    通过js实现分页的代码,一般情况下需要指定页数,脚本之家以前也发布过一些,大家结合下即可。
    2010-09-09
  • BootStrap智能表单实战系列(三)分块表单配置详解

    BootStrap智能表单实战系列(三)分块表单配置详解

    这篇文章主要介绍了BootStrap智能表单实战系列(三)分块表单配置详解的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • 用JS操作FRAME中的IFRAME及其内容的实现代码

    用JS操作FRAME中的IFRAME及其内容的实现代码

    一直都需要这样的东西,发现了这个好东西,一定要研究下
    2008-07-07
  • JS尾递归的实现方法及代码优化技巧

    JS尾递归的实现方法及代码优化技巧

    这篇文章主要介绍了JS尾递归的实现方法及代码优化技巧,结合实例形式分析了尾递归的原理、JS实现方法及优化技巧,需要的朋友可以参考下
    2019-01-01

最新评论