【发布时间】:2015-04-27 23:02:34
【问题描述】:
我有一个对象
myObj = function(){
this.myPublicMember = null;
function privateInitFunc(){
this.myPublicMember = "blah blah test";
}
privateInitFunc()
}
myObj.prototype = {
getPublicMember: function(){ console.log(this.myPublicMember) }
}
我像这样实例化:
var a = new myObj();
a.getPublicMember // logs Null!
如何在初始化时执行的私有函数中设置公共属性?我需要私有初始化函数,因为在设置 myPublicMember 之前还有一些其他变量
【问题讨论】:
-
你写它的方式看起来很奇怪。也许你可以稍微扩展一下这个例子来说明为什么你需要那个额外的函数——它依赖于什么参数?我可能会将该函数放在构造函数范围之外,然后调用
this.myPublicMember = initFunc(); -
@bergi public 成员实际上是来自 Phaser.js 框架的精灵。在初始化函数中,我添加子元素并修改该成员,以便在我的对象初始化时,公共成员已经是一个精灵,其中包含各种子元素。
-
好的,但是为什么要把它放在一个额外的函数中而不是直接放在构造函数中呢?它是否被多次调用,可能是递归的还是什么?
标签: javascript constructor private public