javascript 无侵入式编程

    公司要求写一小型客服系统。根据以往的经验,想好架构和业务逻辑,操刀开做。

    由于是客服系统,免不了要把用户端的应用嵌入到其它平台或者其它网站。针对这一点,我们JS方面就不能像传统直接通过“function 函数名() {}” 来定义函数。

    下面是代码的部分:

var CSTING;
(function() {
	if ($defined(CSTING)) {
		return ;
	}

	var foo = function() {
		alert(1);
	}

	return {
		'foo': foo
	}
)()

 

    看上面的函数结构,完全不同于一般JS的写法(此写法是从朋友那里学来的)。我稍做解释:

    1、语句“var CSTING”,并没有给它赋值。这句代码很重要,而且一定不要有赋值的情况出现(类似var CSTIN = {})。如果在js文件开头就赋值,那么在其它平台或者网站已经定义了CSTING变量就会被新赋值所代替,影响到平台或者网站原有的业务,造成不必要的麻烦。

 

    2、语句“if ($defined(CSTING))”,此语法引用了mootools 的$defined。用来判断变量是否已经定义过(结合上语句"var CSTING;")。如果已定义,直接返回。

        2.1 $defined的语句原型可以理解为 typeof(CSTING) == 'undefined' ? false : true。

 

    3、语句"return { 'foo': foo }",可以理解为匿名函数执行后,返回一个object。object的属性foo是一个函数。

 

    4、(function() {})(),是执行js匿名函数的写法。指马上执行当前function() {}内的函数体。

 

注:

    文中名词“无侵入式编程”可能和HTML、CSS、Javascript中所说的“无侵入式编程”的概念相模糊。如果大家有更好的名词,请指定。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值