如何在javascript中调用窗口对象的用户定义函数

时间:2013-09-23 09:52:51

标签: javascript html

我试图从外部调用一个在窗口对象中定义的函数,但它会抛出错误。

    window.vcm = (function() {
    "use strict";
     function red(){
      alert('red');
     }   
   });  
  vcm.red();//Error at this line...

我是javascript新手OOPS。有人可以告诉我如何在这里调用这个函数。

3 个答案:

答案 0 :(得分:1)

vcm的值没有red属性。

也许你的意思是这样,其中vcm是一个具有属性red的对象,你可以调用它:

window.vcm = {
  red: function(){
    "use strict";
    alert('red');
  }   
};

vcm本身也有可能(尽管在某种程度上你没有看到)作为一个函数,因为它有一个red属性,功能:

window.vcm = (function() {
  "use strict";
   var vcm = function() { alert("vcm"); }
   vcm.red = function() { alert('vcm.red'); };
   return vcm;
 })();

vcm();     // "vcm"
vcm.red(); // "vcm.red"

答案 1 :(得分:1)

有两种方法。

方法1:     window.vcm = { red: function (){ "use strict"; alert('red'); } }; vcm.red();

方法2:

window.vcm = (function() {
    "use strict";
   this.red = function(){
      alert('red');
    }   
});
var x = new vcm();
x.red(); 

答案 2 :(得分:0)

red仅存在于您分配给window.vcm的函数内部,并且仅在执行函数时存在。此外,函数没有属性red

考虑这个更简单的例子:

function foo() {
    function bar() {}
}

bar(); // will throw an error

调用bar会抛出错误,因为bar未在调用它的范围内定义。

您似乎想要将对象分配给window.vcm,其中包含属性red

window.vcm =  {
    red: function (){
        "use strict";
        alert('red');
    }
};

这里我使用对象文字创建一个属性为red的对象。

更多信息: