这段代码是Liferay 5.1版本的代码,主要功能是实现浏览器版本的判断,以根据浏览器的不同调用不同css,实现多浏览器兼容。本文秉着学习JS的态度逐步的对Liferay的一些有用的js代码进行解析,JE上面这方面的高人很多,说得不对的地方非常期望可以得到各位高人的指正。另外也希望对一些和我一样的新人有所帮助。
Liferay.Browser = {
init: function() {
var instance = this;
var version = instance.version();
var exactVersion = instance.version(true);
instance._browserVars = {
agent: '',
is_firefox: false,
...节约篇幅略去部分代码
is_mozilla: false,
};
instance._browserVars.agent = instance.browser().toLowerCase();
...
jQuery.extend(instance, instance._browserVars);
},
browser: function() {
var instance = this;
return jQuery.browser.browser;
},
compat: function() {
var instance = this;
for (var i in instance._browserVars) {
if (!window[i]) {
window[i] = instance._browserVars[i];
}
}
},
version: function(exact) {
var instance = this;
if (!exact) {
return jQuery.browser.version.major;
}
else {
return jQuery.browser.version.string;
}
},
_browserVars: {}
};
jQuery(
function() {
Liferay.Browser.init();
}
);
这一段代码主要是对jQuery的一个j2browse的插件进行了包装,使用自己的变量命名需要来命名。对于初学者来说这样的写法可能比较难以理解。首先是
Liferay.Browser={...};
可能会有疑惑,定义一个变量不是var开头吗?从JE上面一些锁定的老帖http://www.iteye.com/topic/19506,大家都知道javascript是可以隐式声名变量的。但要注意,隐式声名变量总是被创建为全局变量。这种写法的意思就是将Liferay.Browser这个对象声明为全局变量。
再看
Liferay.Browser={...};
{}是js里面对象直接量的写法,在js中,对象属性也可以是函数,而不仅仅是数字字符串。这样的写法我所知道的带来的好处是:js中对象属性可以通过.来调用,而通过.来调用从外观上是很符合其它语言的习惯的,比较易读。在{}内定义了函数后,就可以通过Liferay.Browser.init()这样的方式来完成调用了。也就是接下来的
jQuery(
function() {
Liferay.Browser.init();
}
);
这一段jQuery();实际上就是执行了一个函数,这个jQuery()的函数的参数也是一个function,可以理解为jQuery(var);同alert("error");对比就非常容易理解了。很多新人对于jquery的写法很困惑,跟平常用的一些简单的验证脚本的js写法都不一样,其实最容易混淆和难以接受的概念就是函数function也可以作为一个变量一个参数来传递。
而其实上面的整个代码,你可以这样来理解:
a = {1,2,3};
alert(a.1);
还有一点,通常看到的function的形式都是 function a(){}的形式,这里的function()函数名都没有。这是js的匿名函数,js允许这样的匿名函数。通常这种匿名函数都用在被作为参数传递的场合,在jQuery的应用中非常常见。
一点小小经验心得,权当学习记录,贻笑大方了,肯盼赐教。
分享到:
相关推荐
liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器liferay代码生成器
NULL 博文链接:https://123ken123.iteye.com/blog/670666
liferay代码研读liferay代码研读liferay代码研读
liferay 繁體中文語系檔,原LIFERAY的中文語系翻譯很糟糕,有心人重新翻譯的語系檔。
liferay 架构图,包括所有的类图,以及各类图之的关系等等,包的关系,实现思路
Liferay代码研读Liferay代码研读
liferay代码研读 liferay代码研读
liferay_系列初始Ide_SDK入门教程,Eclipse的lifeRay配置使用
Liferay Portal Liferay IDE
liferay是一个强大的工具,开发者只用写一个持久层的配置文件,改工具就反向生成持久层和业务层的代码.简单说来,工具会自动生成hibernate层和spring层的相关代码,开发者只用关心控制层即可.
liferay cas 代码
liferay6.2 增删改查列子,自己写的。
可供参考的liferay开发的portlet示例工程,学习参考的简单示例
Liferay in actin一书的源代码
Liferay Themes[1].pdf Liferay+CMS系统培训.ppt Liferay+Portal+数据库介绍+.doc Liferay+权限管理.doc liferay-portal-5-2-systems-development-...Liferay代码研读.pdf Liferay环境搭建.doc
Liferay中的AUI框架,官方叫做Alloy,是一...准确来说AUI是Liferay在YUI的基础上进行的Liferay扩展,以方便Liferay的一些实际应用和扩展。AUI的很多语法结构、使用方法都都和YUI相关不太多。熟悉YUI的能够快速熟悉AUI。
Liferay in Action,Liferay Portal Systems Development,Liferay User Interface Development,还有几个中文文档
前端开源库-eslint-config-liferayeslint config liferay,用于liferay javascript样式的eslint可共享配置
Liferay porta 清理不需要的Portlet 代码
liferay portal 开发指南liferay portal 开发指南liferay portal 开发指南liferay portal 开发指南