gpt4 book ai didi

coffeescript - Coffeescript 'Namespace' 中的类

转载 作者:行者123 更新时间:2023-12-03 21:04:19 25 4
gpt4 key购买 nike

我在 Coffeescript FAQ 上找到了这个片段,用于创建简单的命名空间..

# Code:
#
namespace = (target, name, block) ->
[target, name, block] = [(if typeof exports isnt 'undefined' then exports else window), arguments...] if arguments.length < 3
top = target
target = target[item] or= {} for item in name.split '.'
block target, top

# Usage:
#
namespace 'Hello.World', (exports) ->
# `exports` is where you attach namespace members
exports.hi = -> console.log 'Hi World!'

namespace 'Say.Hello', (exports, top) ->
# `top` is a reference to the main namespace
exports.fn = -> top.Hello.World.hi()

Say.Hello.fn() # prints 'Hi World!'

这一切都很好,但我在使用 class 时遇到了很多麻烦。关键词。这样的..
namespace 'Project.Something', (exports) ->
exports.something = -> class something
// .. code here
exports.somethingElse = class somethingElse extends something

任何人都可以对实现此目的的语法有所了解吗?

最佳答案

更好的是,类语法允许名称实际上采用成员的形式,因此您实际上可以这样做:

namespace 'Secrets', (exports) ->
class exports.Hello
constructor: ->
@message = "Secret Hello!"

a = new Secrets.Hello
console.log a.message

完整的 fiddle 在这里: http://jsfiddle.net/7Efgd/1/

关于coffeescript - Coffeescript 'Namespace' 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730859/

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