OOP 的 JavaScript 命名空间和模式

标签 javascript

我想尝试面向对象的js,我想知道我正在尝试的两种方法中哪种方法更好,为什么它更好,请解释,如果还有其他更好的方法,请建议我。

// Approch 1
var thisPage;
abc.forgotPassword = {
    init: function() {
        'use strict';
        thisPage.forgotPasswordFunctionality();
    },
    forgotPasswordFunctionality: function() {
        //some code
    }
};
$(function() {
    thisPage = abc.forgotPassword;
    thisPage.init();
});


// Approch 2
abc.forgotPassword = {
    init: function() {
        'use strict';
        abc.forgotPassword.forgotPasswordFunctionality();
    },
    forgotPasswordFunctionality: function() {
        //some code
    }
};
$(function() {
    abc.forgotPassword.init();
});

最佳答案

这并不是真正面向对象的 Javascript - 您只是将函数存储在对象中。

如果你想让它更加面向对象,请执行以下操作:

abc.ForgotPasswordHelper = function() {
    this.init = function() { ... }
    this.forgotPasswordFunctionality = function() { ... }
}

var helper = new abc.ForgotPasswordHelper();
helper.init();

关于OOP 的 JavaScript 命名空间和模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26551273/

相关文章:

javascript - 如何在保持 DRY 的同时处理 javascript 中的条件回调?

c# - 防止变量丢失

javascript - 将时间戳中的月份加一

javascript - 分配点击监听器时出现意外的范围问题

javascript - 如何给我的 JSON 字典一个主键,而不将其实现到我的循环中?

javascript - 如何使用 JavaScript 或 jQuery 滚动选择列表?

javascript - Mysql 的 Highchart 不工作

javascript - 在 VS Express 2013 的 Javascript 控制台中显示错误文件/行

javascript - 如何从 webpack 中的另一个 JS 文件访问变量

javascript - AngularJS Clock Factory,$超时问题