【发布时间】:2016-03-16 08:08:30
【问题描述】:
所以我有以下基本脚本,用于在整个项目中使用的常用功能。让我们用下面的代码调用这个 base.js。
base.js
(function(document, window, undefined, $){
if (typeof $ === undefined) {
throw new Error("Site requires jQuery");
}
$.SPA = {};
$.SPA.showAlert = function(msg) {
alert(msg);
};
})(document, window, undefined, jQuery);
而且我可以在特定页面中加载不同的脚本。
现在假设我有页面说,dashboard,它使用以下代码加载 dashboard.js -
dashboard.js
$(function() {
$.SPA.showAlert("Bazzinga");
});
所以我可以毫无问题地访问$.SPA。但我的问题是,这是正确的还是可能导致 $.SPA 范围出现问题或有任何机会从其他脚本覆盖它?
【问题讨论】:
-
任何脚本都可以覆盖它..但这就是我们所能做的......另一种解决方案是使用defineProperty并使其成为不可写的值 - 仅在现代浏览器中
标签: javascript jquery scope