利用{}[]替换传入参数的方法

这是在精通javascript里看到的,其实这个方法实现起来还是比较简单,有意思的是它的写法,先看代码:

function attr(elem, name, value) {

	if (!name || name.constructor != String) return '';

	name = {

		'for': 'htmlFor',

		'class': 'className'

	} [name] || name; //注意这里

	if (value != 'underfined') {

		elem[name] = value;

		if (elem.setAttribute) {

			elem.setAttribute(name, value);

		}

	}

	return elem[name] || elem.getAttribute(name) || '';

}

函数的作用是根据你传的参数来设置或获取元素的属性,如果只传两个参数,那么就是返回元素的属性,如果传三个参数,结果就是设置元素的属性并返回属性值。

 

这个函数比较出彩的地方在第三行。大家知道,for,class是元素的属性,但也是js里的关键字,所以就得有一个替换的方法,这里的name ={'for':'htmlFor','class':'className'}[name] || name;如果你第二个参数name是for或者class的时候,它会自动替换成相对应的htmlFor,或className,匿名对象里还可以再加其它的关键字,如果有需要的话。这就是它的作用。这个写法大家可以学习一下。

你可能感兴趣的:(方法)