繁体   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