当我在Javascript中切换到显示模块模式时,它松了一口气。不再这个,那个,exports.func,that.func.bind(那),function(){that.success();事实上,在我的模块中,不再出现'this'甚至存在,因此更少混乱和更清晰!如果我也可以将相同的概念应用于一个类。这将允许我在类的私有范围内工作,并在底部仅显示公共函数。这是我尝试这样做的,甚至是一个班级?你看到这个实现有什么问题吗?
var TestClass = function(_a) {
var a = _a;
function func() { console.log(a); }
return {
func: func
}
};
var tc1 = new TestClass(1);
var tc2 = new TestClass(2);
tc1.func(); //1
tc2.func(); //2
编辑:我称之为'揭示类模式'(下面的w3core给了我这个想法)
var TestClass = function(_a) {
var a = _a;
function func() {
console.log(a);
}
this.func = func;
};
TestClass.prototype.shared = function() {
console.log(5);
};
var tc1 = new TestClass(1);
var tc2 = new TestClass(2);
tc1.func(); //1
tc2.func(); //2
tc1.shared(); //5
tc2.shared(); //5
tc1.constructor; //function TestClass()
tc1 instanceof TestClass; //true
这个方法似乎修复了评论中提到的'instanceof'问题。此外,构造函数现在也设置为函数。
答案 0 :(得分:0)
看一下:
function ClassName (that) {
var that = that || this;
function methodName1 () {
}
function methodName2 () {
}
that.methodName1 = methodName1;
that.methodName2 = methodName2;
}
var case1 = new ClassName();
var case2 = new ClassName({ key: "value" });
var case3 = new ClassName(case2);