0

我有一个如下的对象设置:

var StartScreenLayer = cc.Layer.extend({
ctor: function () {
    this._super();
    // this function can call createBackground!
    this.createBackground();
},
callCreateBackgroundToo: function () {
   // I can call createBackground too!
   this.createBackground();
},
createBackground: function () {
});

如何安排它以使 createBackground 是私有的,但其他其他对象不能调用类似的东西screenLayer.createBackground()并在对象上引发createBackground is undefined类型错误?

4

1 回答 1

0

显然,约定只是在它前面加上一个下划线。但这只是一个约定,因此您仍然可以调用“私有”函数。

我正在使用的 cocos2d 库就是这样做的,所以我想我也会这样做。

编辑:

按照 Volune 的建议,我采用了以下方法:

var StartScreenLayer = cc.Layer.extend(function() {
  function callCreateBackgroundToo() {
     // I can call createBackground too!
     createBackground(this);
  }
  function createBackground() {
  }
  return {
    ctor: function () {
        this._super();
        // this function can call createBackground!
        createBackground.call(this);
    }
  }
}());
于 2014-08-26T00:10:50.637 回答