2010-03-06 89 views
0

在下面的例子中,我试图访问父母兄弟姐妹。有没有比我想出来的更好的方式,是什么给了?Javascript范围 - 父母兄弟姐妹

破碎:

var funkyness = function(){ 

    var some_obj = { 
     foo: function() { 
      alert('bar'); 
     }, 

     'wrapper' : { 
      'OK': function() { 
       // I want to access some_obj.foo 
       foo(); // foo is not defined 
      } 
     } 
    } 

    some_obj.wrapper.OK(); 
}; 

看起来像一个黑客修复:

var funkyness = function(){ 
    var afoo; 
    var some_obj = { 
     foo: function() { 
      alert('bar'); 
     }, 

     'wrapper' : { 
      'OK': function() { 
       // I want to access some_obj.foo 
       afoo(); 
      } 
     } 
    } 

    afoo = some_obj.foo; 
    some_obj.wrapper.OK(); 
}; 

回答

2

为什么不使用:

var funkyness = function(){ 

var some_obj = { 
    foo: function() { 
    alert('bar'); 
    }, 

    'wrapper' : { 
    'OK': function() { 
    debugger; 
    // I want to access some_obj.foo 
    some_obj.foo(); // foo is a member of some_obj 
    } 
    } 
} 

some_obj.wrapper.OK(); 
}; 
+0

哇。我觉得自己像一个白痴 - 这是我尝试的第一件事情之一。我一定是猜错了什么。谢谢! – Zac 2010-03-06 01:05:16

0

你为什么不加入原型?

some_obj.prototype.foo = function() 
{ 
    // bleh 
}