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

时间:2022-02-09 21:27:47

这是在精通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,匿名对象里还可以再加其它的关键字,如果有需要的话。这就是它的作用。这个写法大家可以学习一下。