首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SproutCore命名空间

SproutCore命名空间
EN

Stack Overflow用户
提问于 2013-01-09 01:49:28
回答 2查看 62关注 0票数 1

我想知道如何使用SproutCore的OOP实现创建命名空间对象。我以前使用过Joose,名称空间是自动生成的,例如:

代码语言:javascript
复制
Class('MyNamespace.AnotherNamespace.ClassName',{})

但在SproutCore中,看起来您可能需要自己创建单个对象?我觉得这有点乏味。我是不是遗漏了什么?

任何帮助都将不胜感激。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-17 22:33:16

SproutCore类也很容易创建: SC.Object.extend({...})。并且任何对象的任何非保留属性都可以被视为一个命名空间。只需输入一个SC.Object (SC.Object.create)即可。根据hvg的回答,您可以在实例化应用程序时声明它,或者稍后在另一个文件中声明它:

代码语言:javascript
复制
MyApp.SubNamespace = SC.Object.create({
  ClassName: SC.Object.extend({...}),
  OtherClassName: SC.Object.extend({...})
});

这并不比你的Joosie示例更多的代码。您认为名称空间不是自动为您创建的,这是正确的,但这有语义上的好处:您可以在创建名称空间的同时定义名称空间的所有内容,这鼓励了代码的集中化;它还可以防止意外地自动定义输入错误的名称空间的bug。

这里的关键见解是,您的应用程序对象不仅仅是一个名称空间,它还是一个活动的、动态的类实例,提供了应用程序的功能。您的应用程序的所有代码都应该放在application对象中,这一事实创建了一种自然的名称空间,我发现大多数时候我的子名称空间的工作方式是相同的(myApp.mainPage、myApp.contentController、myApp.remoteDataSource、myApp.statechart)。当然欢迎您通过SC.Object的专用实例将代码组织到专用的名称空间中,我也经常这样做,但是SC应用程序倾向于高度自组织。

票数 1
EN

Stack Overflow用户

发布于 2013-01-09 01:55:27

我认为您可以使用SC.Application对象来实现。

代码语言:javascript
复制
YourApp = SC.Application.create({
    AnotherNamespace: SC.Object.create(), // use objects if you want to hook in observers/bindings
    SimpleNotSCObjectNS: {} // for simple stuff
});
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14221056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档