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

如何在javascript中调用窗口对象的用户定义函数,javascript,html,Javascript,Html,我试图从外部调用一个函数,该函数在窗口对象中定义为,但它抛出了一个错误 window.vcm = (function() { "use strict"; function red(){ alert('red'); } }); vcm.red();//Error at this line... 我不熟悉javascript中的OOPS。谁能告诉我如何在这里调用此函数。red仅存在于分配给window.vcm的函数中,并且仅在执行

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

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

我不熟悉javascript中的OOPS。谁能告诉我如何在这里调用此函数。

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

考虑这个更简单的例子:

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

bar(); // will throw an error
调用
bar
将引发错误,因为
bar
未在调用它的范围内定义

似乎要将对象分配给
window.vcm
,该对象的属性为红色

window.vcm =  {
    red: function (){
        "use strict";
        alert('red');
    }
};
在这里,我使用一个对象文字来创建一个属性为
red
的对象

更多信息:


    • vcm
      的值没有
      红色属性

      也许您的意思是这样的,其中
      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:
      window.vcm={
      红色:函数(){
      “严格使用”;
      警报(“红色”);
      }
      };
      vcm.red()

      方法2:

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

      你有什么错误?