,如果你希望你的构造函数是公共的,您可以使用此解决方法:
(function(global){
function kindOfPrivateFunction(thing){
//Do something with thing
}
global.Thing = function(a, b) {
this.prop1 = a;
this.prop2 = b;
knindOfPrivateFunction(this);
};
global.Thing.publicFunction = function() { };
})(this);
或者,如果你不想ReSharper的来抱怨 “ThisInGlobalContext”:
(function(){
function kindOfPrivateFunction(thing){
//Do something with thing
}
this.Thing = function(a, b) {
this.prop1 = a;
this.prop2 = b;
knindOfPrivateFunction(this);
};
this.Thing.publicFunction = function() { };
})();
编辑
考虑到你的类必须是本地的,你可以使用本地对象来“存储”本地构造函数。但这真的只是一个关闭Resharper的黑客...
(function(){
var local = {};
function kindOfPrivateFunction(thing){
//Do something with thing
}
local.Thing = function(a, b) {
this.prop1 = a;
this.prop2 = b;
knindOfPrivateFunction(this);
};
local.Thing.prototype.publicFunction = function() { };
var instance = new local.Thing(1, 2);
})();
感谢您找到错误报告。我有一个问题:前一个函数*不是构造函数吗?如果一个函数在用'new'调用时返回一个值,则返回的值将成为创建对象的“this”。另外,用这种方式写下来,无论你是用'new'还是不用''来调用它,你都会得到相同的结果。 – Jacob
@Jacob因为它不构造'Thing'的对象,它返回Object的对象。在JS中,构造函数可以返回任何“类”的实例,并且返回对象文字是特定情况下的特例,它允许人们完全否定构造函数和原型。 – Esailija
有道理。感谢您的解释。 – Jacob