una - saber si un objeto esta vacio javascript
¿Cómo comprobar si existe función en JavaScript? (25)
Aquí hay una solución simple y operativa para verificar la existencia de una función y evaluarla de forma dinámica mediante otra función;
Función de disparo
function runDynmicFunction(functionname){
if (typeof window[functionname] == "function" ) { //check availability
window[functionname]("this is from the function it "); //run function and pass a parameter to it
}
}
y ahora puede generar la función dinámicamente, tal vez utilizando PHP como este
function runThis_func(my_Parameter){
alert(my_Parameter +" triggerd");
}
Ahora puedes llamar a la función usando eventos generados dinámicamente.
<?php
$name_frm_somware ="runThis_func";
echo "<input type=''button'' value=''Button'' onclick=''runDynmicFunction(/"".$name_frm_somware."/");''>";
?>
El código HTML exacto que necesitas es
<input type="button" value="Button" onclick="runDynmicFunction(''runThis_func'');">
Seguí esta guía para crear un nuevo JS para la comunicación flash.
Mi codigo es
function getID( swfID ){
if(navigator.appName.indexOf("Microsoft") != -1){
me = window[swfID];
}else{
me = document[swfID];
}
}
function js_to_as( str ){
me.onChange(str);
}
Sin embargo, a veces mi onChange
no se carga. Errores de Firebug con
me.onChange no es una función
Quiero degradarme con gracia porque esta no es la característica más importante de mi programa. typeof
da el mismo error.
¿Alguna sugerencia sobre cómo asegurarse de que existe y luego ejecutar solo en onChange
?
(Ninguno de los métodos a continuación, excepto intentar atrapar una obra)
Este simple código jQuery debería hacer el truco:
if (jQuery.isFunction(functionName)) {
functionName();
}
He intentado la respuesta aceptada; sin embargo:
console.log(typeof me.onChange);
devuelve ''indefinido''. He notado que la especificación establece un evento llamado ''onchange'' en lugar de ''onChange'' (observe el camelCase).
Cambiar la respuesta original aceptada a lo siguiente me funcionó:
if (typeof me.onchange === "function") {
// safe to use the function
}
Intenta algo como esto:
if (typeof me.onChange !== "undefined") {
// safe to use the function
}
o mejor aún (según el comentario de UpTheCreek upvoted)
if (typeof me.onChange === "function") {
// safe to use the function
}
Intente typeof
: busque ''undefined''
para decir que no existe, ''function''
para una función. JSFiddle para este código
function thisishere() {
return false;
}
alert("thisishere() is a " + typeof thisishere);
alert("thisisnthere() is " + typeof thisisnthere);
O como si:
if (typeof thisishere === ''function'') {
// function exists
}
O con un valor de retorno, en una sola línea:
var exists = (typeof thisishere === ''function'') ? "Value if true" : "Value if false";
var exists = (typeof thisishere === ''function'') // Returns true or false
La biblioteca Underscore.js lo define en el método isFunction, ya que esto (que los comentarios sugieren pueden atender algunos errores del navegador)
typeof obj == ''function'' || false
Me gusta usar este método:
function isFunction(functionToCheck) {
var getType = {};
return functionToCheck && getType.toString.call(functionToCheck) === ''[object Function]'';
}
Uso:
if ( isFunction(me.onChange) ) {
me.onChange(str); // call the function with params
}
No vi esto sugerido: me.onChange && me.onChange (str);
Básicamente, si me.onChange está indefinido (que lo estará si no se ha iniciado), entonces no ejecutará la última parte. Si me.onChange es una función, se ejecutará me.onChange (str).
Incluso puedes ir más allá y hacer:
me && me.onChange && me.onChange(str);
En caso de que yo también sea asíncrono.
Para ilustrar las respuestas anteriores, aquí hay un breve fragmento de JSFiddle:
function test () {
console.log()
}
console.log(typeof test) // >> "function"
// implicit test, in javascript if an entity exist it returns implcitly true unless the element value is false as :
// var test = false
if(test){ console.log(true)}
else{console.log(false)}
// test by the typeof method
if( typeof test === "function"){ console.log(true)}
else{console.log(false)}
// confirm that the test is effective :
// - entity with false value
var test2 = false
if(test2){ console.log(true)}
else{console.log(false)}
// confirm that the test is effective :
// - typeof entity
if( typeof test ==="foo"){ console.log(true)}
else{console.log(false)}
/* Expected :
function
true
true
false
false
*/
Para mí la forma más fácil:
function func_exists(fname)
{
return (typeof window[fname] === ''function'');
}
Prueba este:
Window.function_exists=function(function_name,scope){
//Setting default scope of none is provided
If(typeof scope === ''undefined'') scope=window;
//Checking if function name is defined
If (typeof function_name === ''undefined'') throw new
Error(''You have to provide an valid function name!'');
//The type container
var fn= (typeof scope[function_name]);
//Function type
If(fn === ''function'') return true;
//Function object type
if(fn.indexOf(''function'')!== false) return true;
return false;
}
Tenga en cuenta que escribí esto con mi teléfono celular Puede contener algunos problemas en mayúsculas y / u otras correcciones necesarias, como por ejemplo el nombre de las funciones
Si desea que una función como PHP compruebe si la var está establecida:
Window.isset=function (variable_con){
If(typeof variable_con !== ''undefined'') return true;
return false;
}
Qué tal si:
if(''functionName'' in Obj){
//code
}
p.ej
var color1 = new String("green");
"length" in color1 // returns true
"indexOf" in color1 // returns true
"blablabla" in color1 // returns false
o en cuanto a su caso:
if(''onChange'' in me){
//code
}
Ver documentos MDN .
Si está buscando una función que sea un complemento de jQuery, necesita usar $ .fn.myfunction
if (typeof $.fn.mask === ''function'') {
$(''.zip'').mask(''00000'');
}
Si está utilizando eval para convertir una cadena en función, y desea verificar si existe este método, querrá usar typeof y su cadena de función dentro de una eval :
var functionString = "nonexsitantFunction"
eval("typeof " + functionString) // returns "undefined" or "function"
No inviertas esto y prueba el tipo de eval . Si haces un ReferenceError será lanzado:
var functionString = "nonexsitantFunction"
typeof(eval(functionString)) // returns ReferenceError: [function] is not defined
Siempre reviso así:
if(!myFunction){return false;}
simplemente colóquelo antes de cualquier código que use esta función
Sin condiciones
me.onChange=function(){};
function getID( swfID ){
if(navigator.appName.indexOf("Microsoft") != -1){
me = window[swfID];
}else{
me = document[swfID];
}
}
function js_to_as( str ){
me.onChange(str);
}
Sospecho que no se me
asigna correctamente la carga.
Mover la llamada get_ID al evento onclick debería hacerse cargo de ello.
Obviamente puedes seguir atrapando como se mencionó anteriormente:
function js_to_as( str) {
var me = get_ID(''jsExample'');
if (me && me.onChange) {
me.onChange(str);
}
}
Tuve el caso en el que el nombre de la función varía según una variable (var ''x'' en este caso) agregada al nombre de las funciones. Esto funciona:
if ( typeof window[''afunction_''+x] === ''function'' ) { window[''afunction_''+x](); }
Tuve este problema
if (obj && typeof obj === ''function'') { ... }
se mantuvo lanzando un error de referencia si el objeto no estaba definido.
Al final hice lo siguiente:
if (typeof obj !== ''undefined'' && typeof obj === ''function'') { ... }
Un colega me señaló que verificar si es !== ''undefined''
y luego === ''function''
es redundante, por supuesto.
Más simple:
if (typeof obj === ''function'') { ... }
Mucho más limpio y funciona muy bien.
Voy a dar un paso más para asegurarse de que la propiedad sea realmente una función
function js_to_as( str ){
if (me && me.onChange && typeof me.onChange === ''function'') {
me.onChange(str);
}
}
Y luego está esto...
( document.exitPointerLock || Function )();
function sum(nb1,nb2){
return nb1+nb2;
}
try{
if(sum() != undefined){/*test if the function is defined before call it*/
sum(3,5); /*once the function is exist you can call it */
}
}catch(e){
console.log("function not defined");/*the function is not defined or does not exists*/
}
//Simple function that will tell if the function is defined or not
function is_function(func) {
return typeof window[func] !== ''undefined'' && $.isFunction(window[func]);
}
//usage
if (is_function("myFunction") {
alert("myFunction defined");
} else {
alert("myFunction not defined");
}
function function_exists(function_name)
{
return eval(''typeof '' + function_name) === ''function'';
}
alert(function_exists(''test''));
alert(function_exists(''function_exists''));
O
function function_exists(func_name) {
// discuss at: http://phpjs.org/functions/function_exists/
// original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
// improved by: Steve Clay
// improved by: Legaev Andrey
// improved by: Brett Zamir (http://brett-zamir.me)
// example 1: function_exists(''isFinite'');
// returns 1: true
if (typeof func_name === ''string'') {
func_name = this.window[func_name];
}
return typeof func_name === ''function'';
}
function js_to_as( str ){
if (me && me.onChange)
me.onChange(str);
}