加载依赖于页面的面向对象JS属性的最好方法是什么?

Whats the best way to load Object Oriented JS properties dependent on page?

本文关键字:方法 是什么 属性 JS 依赖于 面向对象 加载      更新时间:2023-09-26

我有一个外部JS脚本文件,里面有我所有的对象,一旦文档准备好了,就会运行,就像这样…

jQuery(function($) {
    var Main = {
        run: function () {
             myFunction.setup();
        }
    }
    var myFunction = {
        setup: function() {
            //Do some stuff here
        } 
    }
    Main.run();
});

我希望能够运行myFunction.setup()只有当我在某个页面上,虽然否则我会得到错误,如果该方法正在寻找页面上不存在的元素,例如幻灯片,菜单等

目前,我已经通过检查元素是否存在。length来绕过这个问题,如果它存在,那么运行方法的其余部分,但我想知道是否有更好的方法?也许就像如果它是可以发送变量到脚本文件时,它加载基于页面上,所以它知道什么方法运行?

任何帮助都将非常感激。

感谢贾尔斯

Paul Irish有一个很好的方法来做到这一点,使用body标签中的ID和类来执行特定的代码块:

http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/

这类事情可能会有所帮助:

页面特定

var page_config = {
    setup_allowed: true
    // ... more config
};

var Main,
    myFunction;
(function ($, _config) {
    myFunction = (function () {
        var _public = {};
        if (_config.setup_allowed === true) {
            _public.setup = function () {
            };
        }
        return _public;
    })();
    Main = (function () {
        var _public = {};
        if (typeof myFunction.setup !== "undefined") {
            _public.run = function () {
                myFunction.setup();
            };
            // Run it as we had Main.run() before
            _public.run();
        }
        return _public;
    })();
})(jQuery, page_config);

这样Main.run()myFunction.setup()只有在page_config中指定时才可用。

下面是一个工作示例,您可以试用一下。对于您的特定需求,这可能有点冗长,但希望它能在某种程度上有所帮助:-)