Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/457.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文本对象内的嵌套函数_Javascript_Object_Function_Nested_Literals - Fatal编程技术网

Javascript 文本对象内的嵌套函数

Javascript 文本对象内的嵌套函数,javascript,object,function,nested,literals,Javascript,Object,Function,Nested,Literals,如果在文本对象中,我尝试在嵌套属性/函数中使用“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(); } },

如果在文本对象中,我尝试在嵌套属性/函数中使用“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();//工作


谢谢你,安德里亚。

这个
指的是
f2
里面的
d
,而不是
对象
。您可以存储对对象的引用,或直接调用
对象
,或使用
调用
/
应用
调用函数,并明确告诉它该在该函数中的含义:

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

这里有一种替代方法,它不会改变
this
内部
f2()
的上下文,基于:

var对象=(函数(){
var_这={
f1:函数(){
警报(“这是f1”);
},
d:{
f2:函数(){
_这是f1();
}
}
}
把这个还给你;
})();
object.d.f2();//提醒“这是f1”

在f2内部,
指向模块模式的
d
,而不是
对象
+1