我目前使用这种风格来创建一个类似于 js 类的结构:
var JSClass = (function(){
console.log('JSClass Init');
//-- Set up private var and fnc here
var opt = {
width: 0,
height: 60
}
function _PrivateSum(g){
return (g * opt.width);
}
//-- Set up public access here
function JSClass(){ //the class constructor
//-- class attributes
}
//-- class methods
JSClass.prototype = {
getWidth : function(){
return _PrivateSum(opt.width);
},
setWidth : function(w){
console.log('JSClass setWidth: ' + w);
opt.width = w;
},
getHeight : function(){
console.log('JSClass getHeight');
return opt.height;
},
setHeight : function(h){
opt.height = h;
}
};
return JSClass;
}());
通过在另一个页面中调用以下代码来初始化:
var jc = new JSClass();
这一切都很好,但如果我需要创建一个我想在同一页面上使用多次的类: var jc = new JSClass(); var jc2 = new JSClass();
目前,如果我更改第一个“jc”中的任何内容,那么它也会控制第二个“jc2”中的内容。
所以我的问题是我将如何创建 JSClass() 类的新实例,以便我可以单独操作每个实例而不影响当前实例,类似于 php 类等
我相信我需要以某种方式创建原始版本的克隆,但不确定,或者如果有比上面更好的方法,请随时通知我
非常感谢
最佳答案
我喜欢使用这样的结构: 注意:没有新语句。
//definition
var myClass = function() {
var abc = 1; //private properties
function f1() {...}; //private methods
return {
bar: function() {} //public function *with* access to private members and functions
};
};
//usage:
var myInstance1 = myClass();
var myInstance2 = myClass();
关于JavaScript 类创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9410881/