资讯专栏INFORMATION COLUMN

怎样用JavaScript定义一个类

Cristalven / 1049人阅读

摘要:我原来的写法都是这样后来又看到另外一种复杂一点而且看起来好像没有必要的写法这里的函数其实是一个制造类的函数,它返回了真正的类。感觉这样做的好处是更好的实现了封装。

我原来的写法都是这样:

function Dog(){
    this.name = "hachi";
}

Dog.prototype = {
    makeNoise:function(){
        alert("wangwangwang");
    }
};

后来又看到另外一种复杂一点而且看起来好像没有必要的写法:

function Dog(){
    var privateVariable = "secret";

    var fn = function(){
        //...
    }

    fn.prototype = {
        makeNoise:function(){
            alert("wangwangwang");
        }
    }

    return fn;
}

这里的Dog函数其实是一个 制造类 的函数,它返回了真正的Dog类。
感觉这样做的好处是更好的实现了封装。
例如这里的privateVariable就是一个私有变量:

var d = new Dog;
d.privateVariable //undefined

另外如果在第一个例子的最后加上一句:

Dog.prototype = {
    //e...WTF??
}

这样Dog就不是Dog了~

后来的理解
上面这样新建类的方法直接重写了prototype对象。这样prototype原本内置的属性就没有了(arguments, call, apply等)。
下面这种新建类的方法好像更好一些:

var Dog = function(name){
    this.name = name;
    var privateVariable = "you cannot see me.";
    this.getPrivate = function(){return privateVariable;};
}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/87535.html

相关文章

  • 怎样JavaScript和HTML5 Canvas绘制图表

    摘要:饼状图将数据用切割成份的圆来展示。至于半径,我们用宽度的一半与高度的一半的较小值,因为我们不想让饼状图超出。结果看起来如下这样绘制圆环图我们已经看到如何创建饼状图。怎样画洞呢我们可以画一个白色的圆在饼状图上。 showImg(https://segmentfault.com/img/bVObDh?w=850&h=362); 原文:https://code.tutsplus.com/zh...

    doodlewind 评论0 收藏0
  • 【译】怎样创建定制表单组件

    摘要:若你想在诸如元素的组件上应用高级样式或者想定制组件的行为,你就只能选择创建自己的表单组件。我们将通过本文学习如何构建一个表单组件。 系列文章说明 原文 在许多情况下,[可用的HTML表单组件]()是不够的。若你想在诸如元素的组件上[应用高级样式]()、或者想定制组件的行为,你就只能选择创建自己的表单组件。 我们将通过本文学习如何构建一个表单组件。为达到目的,我们选择重构元素作为例子...

    AnthonyHan 评论0 收藏0
  • 【译】怎样创建定制表单组件

    摘要:若你想在诸如元素的组件上应用高级样式或者想定制组件的行为,你就只能选择创建自己的表单组件。我们将通过本文学习如何构建一个表单组件。 系列文章说明 原文 在许多情况下,[可用的HTML表单组件]()是不够的。若你想在诸如元素的组件上[应用高级样式]()、或者想定制组件的行为,你就只能选择创建自己的表单组件。 我们将通过本文学习如何构建一个表单组件。为达到目的,我们选择重构元素作为例子...

    William_Sang 评论0 收藏0
  • 【译】怎样创建定制表单组件

    摘要:若你想在诸如元素的组件上应用高级样式或者想定制组件的行为,你就只能选择创建自己的表单组件。我们将通过本文学习如何构建一个表单组件。 系列文章说明 原文 在许多情况下,[可用的HTML表单组件]()是不够的。若你想在诸如元素的组件上[应用高级样式]()、或者想定制组件的行为,你就只能选择创建自己的表单组件。 我们将通过本文学习如何构建一个表单组件。为达到目的,我们选择重构元素作为例子...

    wanghui 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<