【问题标题】:Javascript Object constructor as a method of another objectJavascript Object 构造函数作为另一个对象的方法
【发布时间】:2014-09-13 11:06:52
【问题描述】:

我有这个对象:

var x = function(){

    var returnObj = {

        constructor:function(ieps){

            this.jow = ieps

        }

    }

    returnObj.constructor.prototype.build = function(){

        alert(this.jow)

    }

    return returnObj

}

我想用这个打电话:

var jow = new x.constructor("ieps")
jow.build()

所以我尝试让 build() 执行警报,但我得到一个 x.build() 未定义。

有什么想法吗?

谢谢,

【问题讨论】:

  • 我猜你想打电话 x: new (x().constructor)('foo')。只有调用函数才能访问函数的返回值。
  • 您正在尝试使用模块模式,但忽略了调用外部函数。只需将() 添加到该函数的末尾即可。
  • 请注意,您可能是shouldn't create constructors inside a function(除了该函数应该用作单例)。

标签: javascript object constructor prototype


【解决方案1】:

x 是一个返回对象的函数,它有一个构造函数作为属性。您必须首先调用该函数。其次,你不能使用new x().constructor("ieps"),因为它会被解析为(new x()).constructor("ieps"),但你实际上需要new (x().constructor)("ieps")。最后,我们到达:

var jow = new (x().constructor)("ieps")
jow.build()

【讨论】:

  • var jow = new x().constructor("ieps") 实际上就足够了(所以不需要额外的显式表达式强制,额外的 ()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-02
相关资源
最近更新 更多