这是什么类型的Javascript功能?

时间:2017-09-18 17:41:07

标签: javascript function position call

究竟是什么类型的Javascript函数,以及我该如何使用它?

position = this[this.options.position]();

我查了一下.call(),但是这几乎与Javascript的这种奇怪用法无关。

谢谢。

2 个答案:

答案 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]);