如果您想要有两个 testModule 实例,您需要将 testModule 返回为函数。然后当您 require 它时,可以使用 new 实例化多个实例。
示例1
testModule.js
define([
'jquery'
], function ($) {
function TestModule() {
var self = this;
self.id = 0;
self.setID = function (newID) {
self.id = newID;
return self.id;
};
}
return TestModule;
});
main.js
require([
"jquery",
"testModule"
], function ($, TestModule) {
$(function () {
var testInstance1 = new TestModule();
var testInstance2 = new TestModule();
testInstance1.setID(11);
testInstance2.setID(99);
alert(testInstance1.id);
alert(testInstance2.id);
});
});
如果你想要更加高级,你可以保护testModule内的某些属性或函数。
示例2
testModule.js
define([
'jquery'
], function ($) {
function TestModule() {
var self = this;
var privateID = 0;
function privateToString() {
return 'Your id is ' + privateID;
}
self.setID = function (newID) {
privateID = newID;
};
self.getID = function () {
return privateID;
};
self.toString = function () {
return privateToString();
};
}
return TestModule;
});
main.js
require([
"jquery",
"testModule"
], function ($, TestModule) {
$(function () {
var testInstance1 = new TestModule();
var testInstance2 = new TestModule();
testInstance1.setID(11);
testInstance2.setID(99);
alert(testInstance1.getID());
alert(testInstance2.getID());
alert(testInstance1.privateID);
alert(testInstance1.toString());
});
});
如果您只需要单个实例,比如一个单例,您可以使用
new
关键字返回TestModule。
示例3
testModule.js
define([
'jquery'
], function ($) {
function TestModule() {
var self = this;
self.id = 0;
self.setID = function (newID) {
self.id = newID;
return self.id;
};
}
return new TestModule();
});
main.js
require([
"jquery",
"testModule"
], function ($, testModule) {
$(function () {
var testInstance1 = testModule;
var testInstance2 = testModule;
testInstance1.setID(11);
testInstance2.setID(99);
alert(testInstance1.id);
alert(testInstance2.id);
});
});