【发布时间】:2014-04-25 07:31:30
【问题描述】:
我对 javascript 的“new”运算符有点困惑。我怎么知道“new SomeClass()”有这样的行为:
_instance = {};
_instance.__proto__ = SomeClass.prototype;
return SomeClass.apply(_instance, arguments) || _instance;
作为回报,我们有“SomeClass {}”,即 SomeClass 的实例。 但是如果我想看看构造函数中的“this”是什么:
A = function(){ console.log(this); };
new A;
我在输出中看到 A {}。 那么,“new”运算符如何创建_instance 空对象,它已经是一个A 类型的对象?
var A = function(){ console.log(this); };
var _instance = {}
_instance.__proto__ = A.prototype;
A.apply(_instance) || _instance;
将记录 Object {} 而不是 A {}。 据我了解,我们无法实现与“新”相同的行为?
【问题讨论】:
-
那么实际的问题是什么?我没听懂。
-
也许new Operator 会阐明它是如何工作的?
-
问题是什么。你能显示完整的代码吗?
-
@Teemu 这不是向某人介绍它的最简单方法。 MDN's article 可能更清楚。
-
@winner_joiner,我更新了问题
标签: javascript object