这是使用Prototypes的正确方法还是有更好的方法来做到这一点?

时间:2017-02-16 20:53:18

标签: javascript jquery

我目前正在开展一个项目,我对JavaScript的理解有限,我使用了Prototypes(一个尝试学习它们,两个因为它看起来像当时的好主意)。

我有一个充满Prototypes的JS文件,并按如下方式调用它们:

$(document).ready(function() {
    var dash = new Dash();
});

var Dash = function() {
    var _ = this;

    _.defaults = {
        pages: {},
        page_name: {},
        page_order: []
    };

    _.init();
};

Dash.prototype.init = function() {
    var _ = this;

    _.getPages();
    _.onClickNewPage();
    _.onClickEditPage();
};

Dash.prototype.getPages = function() {
    var _ = this;

    // calls some ajax
};

几乎所有Prototype方法都只是根据用户想要查看的内容修改页面。

这是使用Prototypes的正确方法吗?如果不是有更好的方法吗?我可以改进什么以及在每个方法中调用var _ = this;来访问其他方法的内存含义是什么?

道歉,如果这是一个显而易见的问题,但我在Google上发现的只有Cat vs. Dog的例子,它们并不是很有用。

我真的希望在使用最佳实践的同时尽可能提高代码效率。

另请注意:我不会继承任何东西,只是访问不同的方法。

1 个答案:

答案 0 :(得分:0)

  

几乎所有Prototype方法都只是根据用户想要查看的内容修改页面。

关于代码的目的,与原型无关。

  

我没有继承任何东西,只是经常访问不同的方法。这是使用Prototypes的正确方法吗?

没有。如果既没有继承也没有多个实例(并且在页面中只创建了一个new Dash),那么使用带有原型方法的类构造函数会过于复杂。没有必要这样做。

  

如果没有更好的方法吗?

只需使用某种模块模式,将所有这些函数作为声明放在公共作用域中,或者如果要专注于OOP和可扩展性,则使用对象文字。

如果要使模块可重用,请将其包装在返回对象的函数中。

  

在每种方法中调用var _ = this;来访问其他方法有什么内存含义?

本地变量没有任何内存含义,但您的_存在可读性问题。只需使用标准this.方法调用方法。