javascript调用window对象的函数

tim*_*one 6 javascript jquery

我有以下代码,我想知道如何使最后一行工作.我addopted一组API,可目前使用_view追加,因为它的命名空间惯例,而宁愿使用类似arc.view.$函数名的.谢谢

var arc={};
arc.view={
  say_hello: function(){
    alert("I want to say hello");
  }
}
function say_goodbye(){
  alert("goodbye to you");
}

arc.view.say_hello(); // works
window['say_goodbye'](); // works
// possible to make this work?
window['arc.view.say_hello']();
Run Code Online (Sandbox Code Playgroud)

zet*_*len 10

window['arc']['view']['say_hello']();
Run Code Online (Sandbox Code Playgroud)

要么

window.arc.view.say_hello()
Run Code Online (Sandbox Code Playgroud)

要么

window['arc'].view['say_hello']()
Run Code Online (Sandbox Code Playgroud)

点语法或括号语法都可以使用.Dot语法实际上只是基于括号的属性查找的语法糖,因此所有上述代码片段都是相同的.当属性名称本身是动态值时使用括号语法,或者在点语法中使用属性名称会导致语法错误.例如:

var dynamicMethodName = someObject.getMethodName();
someOtherObject[dynamicMethodName]();
Run Code Online (Sandbox Code Playgroud)

要么

someOtherObject["a key string with spaces and {special characters}"]();
Run Code Online (Sandbox Code Playgroud)