原代码:
'use strict';
function GitJs(config) {
var defaults = {
inheriting: false,
clientId: undefined,
accessToken: undefined,
baseUrl: 'https://api.github.com',
mode: 'read'
};
this.config = $.extend(defaults, config);
}
/**
* Gets the jQuery method that GitJs#generateApiRequest is going to use to send the ajax request.
*
* @param {string} httpVerb The HTTP verb that the request will use,
* @return string
*/
GitJs.prototype.getCommandMethod = function (httpVerb) {
var method = $.get;
switch (httpVerb) {
case 'GET':
method = $.get;
break;
case 'POST':
method = $.post;
break;
}
return method;
};
...
新代码:
(function() {
'use strict';
'use strict';
function GitJs(config) {
var defaults = {
inheriting: false,
clientId: undefined,
accessToken: undefined,
baseUrl: 'https://api.github.com',
mode: 'read'
};
this.config = $.extend(defaults, config);
}
/**
* Gets the jQuery method that GitJs#generateApiRequest is going to use to send the ajax request.
*
* @param {string} httpVerb The HTTP verb that the request will use,
* @return string
*/
GitJs.prototype.getCommandMethod = function (httpVerb) {
var method = $.get;
switch (httpVerb) {
case 'GET':
method = $.get;
break;
case 'POST':
method = $.post;
break;
}
return method;
};
...
}());
正如这段代码所代表的,当我尝试:
var gitjs = new GitJs();
我被告知 GitJs 是未定义的
我到底在想什么:
- 我不想把
use strict
每个方法都放在里面。 - 如果我的代码被缩小并连接到另一个文件,我希望它能够很好地发挥作用。
- 我想使用该
.prototype
语法以便稍后继承(和代码清晰) - 我不想创建一个全局
var gitJs
变量,因为它可能会被其他人的脚本覆盖。 - 我假设用户将始终通过
new
关键字调用对象构造函数
为了记录,我知道我错了。大错特错。我似乎无法弄清楚我思维中的缺陷在哪里,我希望得到一些指导。