为什么创建一个名为“构造器”的键似乎改变了“这”的行为
Why does creating a key called "constructor" seem to change the behavior of "this"?
为什么创建一个名为"constructor"的键似乎改变了"this"的行为?以以下代码为例:
var O = {
constructor: function f1(){},
k2: function f2(){return this;}
};
console.log(O.k2());//logs "f1"
有人会认为"this"应该是"Object",因为它在对象文字中,但是如果我使用"constructor"这个名字作为键,它里面的函数突然变成了"this"。如果我试一下,我得到'Object':
var O = {
k1: function f1(){},
k2: function f2(){return this;}
};
console.log(O.k2());//logs "Object"
键名"constructor"是否具有类似于_ proto _和_ prototype的特殊行为?老实说,我不明白为什么"this"在这里附加到函数f1上。
是的,constructor
是创建原型的函数。参考。
相关文章:
- 使用作为参数传递的对象创建新对象的构造器
- Javascript 类型错误:oauth 不是构造器
- 使用函数构造器创建 Javascript 异议
- 聚合物通过选择器改变风格
- 如何存根猫鼬模型构造器
- 移动设备上的“调色精灵”禁用了使用相位器改变精灵状态的功能
- 用日期选择器改变角度输入的日期格式
- 在对象构造器onclick事件中创建的HTML按钮不起作用
- 需要帮助修复由于2个javascript对象具有相同的名称,但不同的构造器引起的问题
- 为什么我得到一个'函数未定义'即使我将函数添加到构造器的原型中
- 位图构造器URL VS图像,如何决定
- 我如何正确地使一个构造器的prototype属性继承它原来的prototype属性?
- 为什么如果构造器的原型改变了,对象的构造器属性也会改变?
- 为什么创建一个名为“构造器”的键似乎改变了“这”的行为
- 使用字符串"构造器"JavaScript对象中的关键字
- 为什么比较“构造器”?两个Windows的属性不可靠
- 使用Javascript构造器进行原型设计
- jQuery对象构造器-方法调用自身
- 在实例模式下使用p5.sound.js: 'p5.Amplitude()不是构造器'
- 通过给定的@decorators获取所有类/构造器