理解JavaScript类和对象

时间:2013-06-25 14:34:16

标签: javascript

有时我们写

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

有时我们写

window.COB.AppHelper = {

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

有什么区别?我能阅读什么,在哪里可以理解这些基本和重要的东西?

2 个答案:

答案 0 :(得分:1)

在Javascript中没有类,只有对象。但是你可以使用一个函数来做一些分类的事情。您可以在表单

中思考一个对象
var name = {};

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

 var name = function(){}

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

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

答案 1 :(得分:1)

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

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

Dom做dom的东西,Validators做验证。你不能只定义

com.myCompany.myApplication.Dom

因为window.com未定义且您无法在窗口上添加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,您必须先定义它。