为什么创建一个名为“构造函数”的键似乎会改变“this”的行为?

时间:2014-07-04 09:19:08

标签: javascript

为什么创建一个名为“构造函数”的键似乎会改变“this”的行为?以此代码为例:

var O = {
  constructor: function f1(){},
  k2: function f2(){return this;}
};

console.log(O.k2());//logs "f1"

有人会认为“this”将是“Object”,因为它在对象文字中,但如果我使用名称“constructor”作为键突然其内部的函数变为“this”。如果我试试这个,我会得到'对象':

var O = {
  k1: function f1(){},
  k2: function f2(){return this;}
};

console.log(O.k2());//logs "Object"

键名“构造函数”是否具有_ _ proto _ _和prototype等特殊行为?老实说,我不明白为什么“这个”在这里附加到函数f1。

1 个答案:

答案 0 :(得分:0)

是的,constructor是创建原型的函数。 Reference