Javascript 如何创建包含函数指针的对象成员变量

Javascript 如何创建包含函数指针的对象成员变量,javascript,function,object,delegates,Javascript,Function,Object,Delegates,在Javascript中,我有一个对象,其中包含一个名为“dialogHost”的成员变量。它本身就是一个可以调用不同函数的对象。目前,我设置它的方式是,在大多数情况下,对象的dialogHost值是未定义的。在极少数需要定义的情况下,我将其定义为类似“window.parent”的内容。以这种方式设置的问题是,每当我需要使用此成员变量时,我都必须先检查它是否已定义,如: var myDelegate; if (typeof (myObject.dialogHost) !== 'undefin

在Javascript中,我有一个对象,其中包含一个名为“dialogHost”的成员变量。它本身就是一个可以调用不同函数的对象。目前,我设置它的方式是,在大多数情况下,对象的dialogHost值是未定义的。在极少数需要定义的情况下,我将其定义为类似“window.parent”的内容。以这种方式设置的问题是,每当我需要使用此成员变量时,我都必须先检查它是否已定义,如:

var myDelegate;

if (typeof (myObject.dialogHost) !== 'undefined') {
    myDelegate = myObject.dialogHost.someFunction;
} else {
    myDelegate = someFunction;
}

myDelegate(...);
我必须在一些地方进行这种类型的检查,如果该值始终存在,那就太好了。在这种情况下,我是否应该为dialogHost提供一个默认值“window”?我不确定这是不是个好主意。基本上,我希望默认值可以简单地调用:

// This would be equivalent to myDelegate(...) above...
myObject.dialogHost.someFunction(...);

无需每次都进行上述检查。有办法做到这一点吗?

在JavaScript中,非常好的做法是使用开发“尽可能避免全局变量”

我是否应该为中的dialogHost提供默认值“window” 这个案子,不要依赖全局
窗口
对象。使用闭包和立即函数


谢谢,但我的意思是dialogHost本身也是一个对象(不是函数指针)。dialogHost包含一个函数指针。通常,dialogHost基本上是窗口对象。不幸的是,在脚本中定义了全局函数,更改它们将是一项更大的任务。
var myObject = {
        'dialogHost': function(){
                          // doing some good stuff
                      }
    },
    myDelegate;

myDelegate = (function(obj){
   function someFunction(){    // local function, not accessible from outside
       // doing some good stuff too
   }

   return (typeof obj.dialogHost === 'function')? obj.dialogHost : someFunction;

   }
)(myObject);

// Now you can use myDelegate() function anywhere below 
myDelegate(...);