如果我错了,请纠正我。我不确定速记是否正确。但是,这是我能提出的最接近的:
例如:
this.getAttribute
我在我的一个脚本中使用了很多,超过20个项目。
是否可以像以下一样引用它:
getA
答案 0 :(得分:2)
如果调用将一个对象的方法赋给var并通过它调用它,那么方法中的this
的值将是全局上下文,因为函数上下文被绑定到它所调用的位置来自,所以你不能这样做。
但是,您可以使用内置函数方法bind
来保留上下文,但这只是为您的方法设置别名的相当昂贵的操作。
var getA = this.getAttribute.bind(this);
getA("yourAttribute");
或使用call
在您调用时强制执行上下文
var getA = this.getAttribute;
getA.call(this,"yourAttribute");
但两者都不是很好,在大多数情况下,您需要做的就是将实际的返回值保存在var中并重用它,而根本不调用getter。吸气剂是冗长的,因为这是使昂贵的方法看起来昂贵的好方法,并且阻止人们首先连续20次调用它。通常只有在您预期不同的结果时才会调用 。
var a = this.getAttribute("yourAttribute");
当你说你在20个不同的地方叫它20次时我相对肯定那些不是20个期望值不同的地方,特别是当它们在相同的功能范围内时。
如果您正在处理自定义data-*
属性,您也可以直接从元素的.data
属性中检索它,它是所有数据属性的映射,这是理想的场景。 / p>
<element data-your-attribute="yourData"></element>
var a = this.data.yourAttribute; //automatically updated and name converted from dash to camelCase
(所有示例假设this
引用您的元素,而您的函数是元素的方法)
答案 1 :(得分:1)
是的,你可以创建一个这样的函数:
function getA(element, attr) {
return element.getAttribute(attr);
}
然后,使用this.getAttribute(attr)
而不是getA(this, attr)
。
但是,如果你想用它来获取同一元素的几个属性,并且你想避免每次都避免传递this
,你可以使用
var getA = this.getAttribute.bind(this);
然后,使用this.getAttribute(attr)
而不是getA(attr)
。
答案 2 :(得分:1)