Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

javascript calling a function on window object

I have the following code and am wondering how to make the last line work. I addopted a set of api's that current use _view appended as it's namespacing convention and would rather use something like arc.view.$function_name. thx

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']();
like image 357
timpone Avatar asked Apr 14 '12 19:04

timpone


Video Answer


1 Answers

window['arc']['view']['say_hello']();

or

window.arc.view.say_hello()

or

window['arc'].view['say_hello']()

Either the dot syntax or the bracket syntax will work. Dot syntax is really just syntactic sugar for a bracket-based property lookup, so all of the above code snippets are identical. Use bracket syntax when the property name itself is a dynamic value, or when using the property name in dot syntax would cause a syntax error. E.g.:

var dynamicMethodName = someObject.getMethodName();
someOtherObject[dynamicMethodName]();

or

someOtherObject["a key string with spaces and {special characters}"]();
like image 174
zetlen Avatar answered Oct 23 '22 11:10

zetlen