Передать функцию в функцию
var validator = function(newfunc) { var param = 1; var oldfunc = function() { alert(param); } oldfunc = newfunc; oldfunc(); } validator( function() { alert(param) } ); При попытке запуска говорит что param undefined. Как передать функцию в функцию, чтобы ей стали доступны переменные функции, в которую она была передана? |
никак.. приватные переменные нельзя получить из функций созданных не внутри scope где лежат те переменные.
|
var validator = function(newfunc) { var param = 1; var oldfunc = function() { alert(param); } newfunc = new oldfunc oldfunc(); } validator( function() { alert(param) } ); |
9xakep, у меня так oldfunc выполняется, что делаю не так?
Можно проверить так: var validator = function(newfunc) { var param = 1; var oldfunc = function() { alert(2); } newfunc = new oldfunc; oldfunc(); } validator( function() { alert(param) } ); будет выдаваться 2 |
9xakep,
ты хоть сам то понял что написал то? ты два раза вызываешь функцию ту что внутри находится... а та что передается через параметр, ни фига не нужна в твоем примере: var validator = function(newfunc) { var param = 1; var oldfunc = function() { alert("internal " + param); } newfunc = new oldfunc oldfunc(); } validator( function() { alert("external " + param) } );_axl, яж говорю нельзя получить доступ к приватным данным.. смирись с этим. |
devote,
да я понял уже... _axl, сделай param глобальной |
_axl,
делайте свойства как говорит 9xakep в глобальном пространстве и юзайте их: var validator = function(newfunc) { var global = { param: 1 } var oldfunc = function() { alert("internal " + global.param); } oldfunc = newfunc || oldfunc; oldfunc.call( global ); } validator(); validator( function() { alert("external " + this.param) } ); |
да я давно так уже сделал: :D
var validator = function(newfunc) { validator.param: 1 var oldfunc = function() { alert("internal " + validator.param); } oldfunc = newfunc; } validator( function() { alert("external " + validator.param) } ); |
Часовой пояс GMT +3, время: 21:24. |