`
playfish
  • 浏览: 285270 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

liferay的JS代码基础解析

阅读更多
这段代码是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的应用中非常常见。

一点小小经验心得,权当学习记录,贻笑大方了,肯盼赐教。
2
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics