簡體   English   中英

文字對象內的嵌套函數

[英]Nested function inside literal Object

如果在文字對象中我試圖在嵌套屬性/函數中使用“this”引用函數,這不起作用。 為什么? 嵌套屬性有自己的范圍嗎?

例如,我想從d.f2內部調用f1:

var object = {    

  a: "Var a",
  b: "Var b",
  c: "Var c",

  f1: function() {
    alert("This is f1");
  },

  d: {
      f2: function() {
       this.f1();
    }
  },

  e: {
      f3: function() {
        alert("This is f3");
     }
  }
}

object.f1(); //工作
object.d.f2(); //不要工作 object.e.f3(); //工作

謝謝,安德烈。

this指的是f2里面的d而不是object 你可以存儲一個參考對象,或撥打object直接,或使用call / apply調用的函數,並明確地告訴它this意味着函數內:

object.d.f2.call(object); // now this refers to object inside f2

這里是不改變的情況下的替代方法this里面f2()的基礎上, @ slaver113的想法

var object = (function() {
  var _this = {
    f1: function() {
      alert('This is f1');
    },
    d: {
      f2: function() {
        _this.f1();
      }
    }
  }

  return _this;
})();

object.d.f2(); // Alerts 'This is f1'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM