tipos - pasar parametros a una funcion javascript desde html
FunciĆ³n anidada de llamada Javascript (6)
Tengo el siguiente código:
function initValidation()
{
// irrelevant code here
function validate(_block){
// code here
}
}
¿Hay alguna manera de que pueda llamar a la función validate()
fuera de la función initValidation()
? He intentado llamar a validate()
pero creo que solo está visible dentro de la función principal.
Deberia trabajar.
function initValudation() {
validate();
function validate() {
}
}
Espero que estés buscando algo como esto.
function initValidation()
{
// irrelevant code here
this.validate = function(_block){
// code here
}
}
var fCall = new initValidation()
fCall.validate(param);
Esto funcionará.
Espero que esto aborde tu problema.
Esta invocación devolverá la declaración de la función, que es la validación de la función. Así que puedes invocar directamente después de la primera invocación.
function initValidation() {
// irrelevant code here
return function validate(_block) {
// code here
}
}
initValidation()();
Puede llamar a validate
desde dentro de initValidation
. Me gusta esto.
function initValidation()
{
// irrelevant code here
function validate(_block){
// code here
}
return validate(someVar);
}
validate
no es visible para nada fuera de initValidation
debido a su scope .
Edit: Aquí está mi sugerencia de una solución.
(function() {
function validate(_block){
// code here
}
function initValidation()
{
// irrelevant code here
return validate(someVar);
}
function otherFunctions() {
// ...
}
// initValidation = function
}());
// initValidation = undefined
Todas sus funciones estarán ocultas a cualquier cosa fuera del envoltorio de la función, pero todas podrán verse entre sí.
Sé que esta es una publicación antigua, pero si desea crear un conjunto de instancias con las que desea trabajar y reutilizar el código, podría hacer algo como esto:
"use strict";
// this is derived from several posts here on SO and ultimately John Resig
function makeClassStrict() {
var isInternal, instance;
var constructor = function(args) {
if (this instanceof constructor) {
if (typeof this.init == "function") {
this.init.apply(this, isInternal ? args : arguments);
}
} else {
isInternal = true;
instance = new constructor(arguments);
isInternal = false;
return instance;
}
};
return constructor;
}
var MyClass = makeClassStrict();// create "class"
MyClass.prototype.init = function(employeeName, isWorking) {
var defaultName = ''notbob'';
this.name = employeeName ? employeeName : defaultName;
this.working = !!isWorking;
this.internalValidate = function() {
return {
"check": this.working,
"who": this.name
};
};
};
MyClass.prototype.getName = function() {
return this.name
};
MyClass.prototype.protoValidate = function() {
return {
"check": this.working,
"who": this.name
};
};
var instanceBob = MyClass("Bob", true);// create instance
var instanceFred = MyClass("Fred", false);// create instance
var mything = instanceFred.internalValidate();// call instance function
console.log(mything.check + ":" + mything.who);
var myBobthing = instanceBob.protoValidate();
console.log(myBobthing.check + ":" + myBobthing.who);
function initValidation()
{
// irrelevant code here
function validate(_block){
console.log( "test", _block );
}
initValidation.validate = validate;
}
initValidation();
initValidation.validate( "hello" );
//test hello