-5

有时我们写

window.COB = window.COB || {};
window.COB.HostWebApp = function() { ... }();

有时我们会写

window.COB.AppHelper = {

        getUrl: function (absoluteUrl) { ... },
};

有什么不同?我可以阅读什么以及在哪里阅读以了解这些基本和重要的东西?

4

2 回答 2

1

在 Javascript 中没有类,只有对象。但是你可以使用一个函数来做一些经典的事情。你可以认为一个对象的形式

var name = {};

作为一种“静态”类,您不需要在其中实例化和

 var name = function(){}

作为使用前需要实例化的类。

这是一个很好的阅读:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Introduction_to_Object-Oriented_JavaScript

于 2013-06-25T14:38:30.133 回答
1

您正在定义要用作命名空间的对象文字。有时您希望将函数和对象分组在逻辑组中,例如 url,但相反。例如:

com.myCompany.myApplication.Dom
com.myCompany.myApplication.Validators

Dom 在哪里做 dom 东西,而 Validators 在哪里做验证。你不能只定义

com.myCompany.myApplication.Dom

因为 window.com 是未定义的,并且您不能在 window 上添加 myCompany,这就是为什么在您的代码中window.COB = window.COB || {};检查窗口上是否存在 COB 以及是否不存在它的原因。

稍后您可以将代码组织在多个文件中,以便 Dom 进入 Dom.js(就像在 Java 中一样)。如果我想创建 com.myCompany.myApplication.Dom 我必须逐步检查对象是否尚未创建:

com=com||{}; //if com doesn't exist create it
com.myCompany=com.myCompany||{};//if com.myCompany doesn't exist create it
//... and so on

这是因为 com.myCompany 可能已经在 Validators.js 或任何其他 js 文件中声明,并且您不想直接覆盖它。

编码:

window.COB.AppHelper = {

        getUrl: function (absoluteUrl) { ... },
};

将抛出错误,因为 COB 在窗口上未定义,您必须先定义它。

于 2013-06-25T14:39:14.173 回答