gpt4 book ai didi

javascript - 在 CoffeeScript 中为外部作用域定义类

转载 作者:行者123 更新时间:2023-11-30 10:36:57 26 4
gpt4 key购买 nike

这是对我之前的问题 Javascript: ReferenceError: MyClass is not defined 的跟进.

将此转换为 .js 的 .coffee 文件将创建一个 MyClass仅在其范围内可用。

class MyClass
name: (name) ->

在 CoffeScript 中有没有办法让类对外部作用域可用?我应该能够 <script src.. HTML 页面上的文件并从控制台实例化该类。

最佳答案

无论你怎么做,你都会“污染全局范围”。这只是你如何做的问题。

CoffeeScript 中的@ 符号用于表示“此范围”。所以你甚至可以在类定义上使用它。类声明的结果是该类是在 window 对象的范围内定义的(除非有一些其他情况,但您在这里描述的情况不太可能)。

class @CustomClassName
constructor: ->
# constructor stuff goes down...

但是,就我个人而言,我更喜欢使用命名空间来执行此操作。想想 google.maps.Map,或者如果您曾经编写过 Actionscript 3:flash.display.MovieClip

在你的 CoffeeScript 文件的顶部放一些类似这样的东西:

window.customnamespace = window.customnamespace || {}

现在当你创建你的类(class)时,你可以说:

class customnamespace.ClassName
constructor: (container) ->
# set the container
@container = container
# etc...

class customnamespace.OtherClassName
constructor: ->
# Another class...

在您的 document.ready 中(如果您使用的是 jQuery),您将可以全局访问该命名空间及其所有类。

例子:

$(document).ready(function(e) {
var c = new customnamespace.ClassName($('#container'));

var other = new customnamespace.OtherClassName();

有道理吗?

关于javascript - 在 CoffeeScript 中为外部作用域定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13435225/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com