【问题标题】:javascript pass arguments into sibling objectjavascript将参数传递给兄弟对象
【发布时间】:2012-06-29 20:27:13
【问题描述】:

我有这样的事情:

function showFunction () {
  // need position and place
}

var obj = {
  position: 1,
  place: 2,
  onShow: showFunction
}

如何从 showFunction 访问位置和地点?

【问题讨论】:

  • obj 作为参数传入:showFunction(obj);
  • @JonathanM:那个,或者原型函数并使用this.position
  • @Truth 没必要,this 内部showFunction 的构造方式将指向obj
  • “兄弟对象”是否意味着它们在同一个变量范围内?如果是这样,那么请继续并在函数中使用obj。您可以将函数传递到其他地方,它仍然可以工作。

标签: javascript arguments


【解决方案1】:

this 应该可以工作:

当一个函数作为一个对象的方法被调用时,它的this被设置为 调用该方法的对象。

function showFunction() {
    console.log(this.position, this.place);
}
var obj = {
    position: 1,
    place: 2,
    onShow: showFunction
}
obj.onShow()

【讨论】:

    【解决方案2】:

    由于函数是在 JavaScript 中提升的,因此您只需在函数内部像在函数外部一样引用 .position.place

    function showFunction() {
      return obj.position;
    }
    

    但如果由于某种原因您无法访问obj,您可以如Jonathan 所说,将obj 作为参数传递给showFunction()

    function showFunction(obj) {
        return obj.position;
    }
    
    var obj = {
      position: 1,
      place: 2,
      onShow: function() {
          return showFunction(obj);
      }
    }
    

    【讨论】:

      【解决方案3】:

      因为您使showFunction 成为obj 的成员,所以您可以通过this 访问该对象。

      function showFunction () {
          var a, b;
          a = this.position;
          b = this.place;
      }
      
      var obj = {
        position: 1,
        place: 2,
        onShow: showFunction
      }
      

      或者,您可以访问obj,就像在函数之外一样:

      function showFunction () {
          var a, b;
          a = obj.position;
          b = obj.place;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-27
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 2012-07-09
        • 1970-01-01
        • 2018-09-02
        • 2021-06-10
        相关资源
        最近更新 更多