我想实现的目标是:使用JavaScript中的原型创建模块,以便用户可以多次实例化模块,并为每个实例设置不同的选项。
问题在于:当使用
测试:使用
问题在于:当使用
var my_module3 = new module();
然后尝试使用my_module3.init({ option: "value" });
设置选项时,它只会改变对象一次,而不是每次都改变。测试:使用
console.log
可以看到它打印出具有相同选项的两个对象,即使它们被不同地设置。Object {first: "Barry", second: "Larry", third: "Sam"}
Object {first: "Barry", second: "Larry", third: "Sam"}
这是我的 jsFiddle 完整代码: http://jsfiddle.net/11bLouc8/2/
var module = (function () {
// default options
var options = {
first: "test",
second: "test2",
third: "test3"
};
// take in useroptions and replace default options
var module = function(userOptions) {
if (userOptions != null && userOptions != undefined
&& userOptions != 'undefined') {
for (var opt in options) {
if (userOptions.hasOwnProperty(opt)) {
options[ opt ] = userOptions[ opt ];
}
}
}
};
//prototype
module.prototype = {
init: module,
options: options
};
return module;
})();
// create a new instance
var my_module3 = new module();
my_module3.init({
first: "Mike",
second: "Lisa",
third: "Mary"
});
// another instance
var my_module2 = new module();
my_module2.init({
first: "Barry",
second: "Larry",
third: "Sam"
});