我正在测试一个JS对象
gl.test = function () {
var $ = jQuery;
var _private = null;
var _setStr = function ( t ) {
_private = t;
}
var _getStr = function() {
return _private;
}
var obj = {
init: function ( str ) {
_setStr(str);
},
test: function() {
console.log( _getStr() );
},
EOF: null
};
return obj;
}();
执行以下操作时:
var test1 = gl.test;
var test2 = gl.test;
test1.init('test1');
test2.init('test2');
test1.test();
test2.test();
结果以test2
test2
这是一个对象,我希望执行顺序无关紧要,并期望test1
和test2
按以下方式返回:
var test1 = gl.test;
test1.init('test1');
test1.test();
var test2 = gl.test;
test2.init('test2');
test2.test();
我在这里做错了吗?
答案 0 :(得分:1)
如评论中所述,您未实例化gl.test
的新实例。您可以将其更改为不是IIFE并使用new
关键字
var gl ={}
gl.test = function () {
....
}
var test1 = new gl.test();
var test2 = new gl.test();
答案 1 :(得分:0)
因为test1和test2是同一个对象
//删除自动调用功能并执行gl.test
var test1 = gl.test();
var test2 = gl.test();
但是并不是说clases如何在javascript中工作