You will need to change
setCallback = function (c) {callback = c;}
to
this.setCallback = function (c) {callback = c;}
therefore, the setCallback function will be publicly available.
, :
callback.call(scope, param1, param2);
, :
callback.apply(scope, parameters);
Scope , {}, .
, , javascript. javascript-,
var mynamespace = {};
(function () {
function MyObject(param1, param2) {
this.initialize(param1, param2);
}
MyObject.prototype = {
initialize: function (param1, param2) {
var privateScope = {
param1: param1,
param2: param2,
callback: null
};
this.setCallback = function (c) {
privateScope.callback = c;
}
this.doSomething = function () {
if (privateScope.callback) {
privateScope.callback.call();
}
}
}
}
mynamespace.MyObject = MyObject;
}());
,
var obj = new mynamespace.MyObject("value1", "value2");