2016-04-05 11 views
0

Bunun Javascript'te mümkün olduğundan emin değilim. Bir fonksiyonun değişkenine bir geçiş fonksiyonu üzerinden erişmek istiyorum (veya bir fonksiyon bir “onend” çağrısı üzerinden iletilirse).JS'de bir parametre olarak işlev iletin ve alıcı işlevinin değişkenlerine erişme

function Outer() { 

    var fn; 
    var foo = 'this is foo'; 

    this.bar = function(x) { 
    fn(); 
    } 

    this.setFunction = function(f) { 
    fn = f; 
    } 
} 

var o = new Outer(); 
o.setFunction(function() { 
    alert(foo); //doesn't work 
}); 

o.bar(); //want to alert 'this is foo' 
+1

https://jsfiddle.net/rayon_1990/jde585nm/ – Rayon

+0

her şey, çoğu şey JavaScript mümkündür :) –

cevap

1

bu

function Outer() { 

    var fn; 
    this.foo = 'this is foo'; 

    this.bar = function(x) { 
    fn(); 
    } 

    this.setFunction = function(f) { 
    fn = f; 
    } 
} 

var o = new Outer(); 
o.setFunction(function() { 
    alert(o.foo); 
}); 

o.bar(); //want to alert 'this is foo' 

denemek ve neye ihtiyacınız olup olmadığını söyleyebilir misiniz. Sizin durumunuzda

2

fn, işlevsel olarak bir geri çağırmadır. bağımsız değişken olarak yerel foo değişkenle geri arama Çağrı:

function Outer() { 

    var fn; 
    var foo = 'this is foo'; 

    this.bar = function() { 
    fn(foo); 
    } 

    this.setFunction = function(f) { 
    fn = f; 
    } 
} 

var o = new Outer(); 
o.setFunction(function(foo) { 
    alert(foo); 
}); 

o.bar(); 
+0

teşekkürler. Kabul edilen çözümü hem bu hem de Alvaro'nın işi olarak paylaşmak istedim. Sonunda, benim asıl senaryom, Alvaro'nun çözümünü kullandı. – Gazzer