究竟是什么类型的Javascript函数,以及我该如何使用它?
position = this[this.options.position]();
我查了一下.call(),但是这几乎与Javascript的这种奇怪用法无关。
谢谢。
答案 0 :(得分:3)
这不是功能,它是一个函数调用。该表达式在this.options.position
引用的对象上查找由this
命名的属性,然后调用属性值引用的函数。例如,如果this.options.position
包含字符串"one"
,那么就像执行position = this.one()
一样。
示例:
var obj = {
options: {},
one: function() {
console.log("This is function one");
return 1;
},
two: function() {
console.log("This is function two");
return 2;
},
example: function() {
var position = this[this.options.position]();
console.log(position);
}
}
obj.options.position = "one";
obj.example();
obj.options.position = "two";
obj.example();
答案 1 :(得分:0)
这与函数无关,但与property access无关。这个名为bracket notation。它允许您访问名称在运行时确定的属性。
例如,这两个是等价的:
this.left() // dot notation
//
var position = 'left';
this[position](); // bracket notation
如果您使用过数组,那么您已经遇到了括号表示法:
var arr = [1,2,3];
console.log(arr[0]);