function fn()
{
this.user = ‘testNew’;
}
var a = new fn;
console.log(a.user); //testNew
和
function fn()
{
this.user = ‘testNew’;
}
var a = new fn();
console.log(a.user); //testNew
为什么一样,new的作用到底是什么,为什么第一个fn不执行也可以new一个出来?
function fn()
{
this.user = ‘testNew’;
}
var a = new fn;
console.log(a.user); //testNew
和
function fn()
{
this.user = ‘testNew’;
}
var a = new fn();
console.log(a.user); //testNew
为什么一样,new的作用到底是什么,为什么第一个fn不执行也可以new一个出来?
这是两个问题,我来回答一哈new干了什么。
function Foo(){
}
var foo =new Foo();
等价于
var o = new Object();
o.[[Prototype]] = Foo.prototype;
Foo.call(o);
首先要明白,new是一个运算符。
然后new命令会触发三个动作:
1:创建一个新的空对象
2:把这个空对象作为参数传递给构造函数,这个参数就是this,也就是函数上下文,传递过程是隐式的,然后执行构造函数,也可以看成给这个空对象构造的过程
3:返回这个新构造的对象
10 回答11.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
这个问题《JavaScript权威指南》8.2.3节已经有详细解释了:
