Javascript:ReferenceError:未定义MyClass

Mar*_*tin 3 javascript coffeescript

这是非常基本的.我尝试实例化嵌入的外部.js文件中定义的类..js的代码就是这个.

(function() {
  var MyClass;

  MyClass = (function() {

    function MyClass() {}

    MyClass.prototype.name = function(name) {};

    return MyClass;

  })();

}).call(this);
Run Code Online (Sandbox Code Playgroud)

HTML就是这样

<!DOCTYPE html>
<html>

  <head>
    <title>Sample Page</title>
    <script src="file.js" type="text/javascript"></script>
  </head>

  <body>

  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我尝试在控制台上实例化类,但我看到ReferenceError: MyClass is not defined:

var myVar
myVar = new MyClass
> ReferenceError: MyClass is not defined
Run Code Online (Sandbox Code Playgroud)

如果我尝试MyClass直接从控制台调用我得到相同的错误

> ReferenceError: MyClass is not defined
Run Code Online (Sandbox Code Playgroud)

我确定我在这里遗漏了一些可怕的东西,但我能弄明白什么.

更新:要创建编码的javascript我正在使用CoffeScript,代码就是这样.

class MyClass
  acc: (name) ->
Run Code Online (Sandbox Code Playgroud)

建议的答案代码在转换回CoffeScript时使用http://js2coffee.org呈现为不同的代码,但仍然不起作用.想知道如果有一个CoffeScript提示将MyClass从本地范围弹出到外部范围.

0x4*_*2D2 5

我的类在闭包中定义.而你想要做的是通过将其设置为窗口对象将其"弹出"到外部范围:

(function() {

    var myClass = ...

    window.myClass = myClass;

}).call( this );
Run Code Online (Sandbox Code Playgroud)

更新:似乎你想在CoffeeScript中使用它.干得好:

(->

  myClass = (->
    myClass = ->
    myClass::name = (name) ->

    myClass
  )()

  window.myClass = myClass

).call this
Run Code Online (Sandbox Code Playgroud)

JSBin演示