1、在许多文献中关于this的指向 都是 谁调用这个方法 这个方法内的this就指向谁;可是为什么构造函数里面的this会指向实例呢,当然,我这里并不是调用的原型里面的方法。
2、代码如下:
function p(){
console.log(this)
}
new p();
function fn(){
console.log(this);
}
fn();
3、运行结果如下
4、这个结果应该怎么理解呢
1、在许多文献中关于this的指向 都是 谁调用这个方法 这个方法内的this就指向谁;可是为什么构造函数里面的this会指向实例呢,当然,我这里并不是调用的原型里面的方法。
2、代码如下:
function p(){
console.log(this)
}
new p();
function fn(){
console.log(this);
}
fn();
3、运行结果如下
4、这个结果应该怎么理解呢
new的步骤:
1、创建了一个新对象p
2、将新对象p的construtor指向构造函fucntion p(){console.log(this)};
3、把新对象p的prototype chain(原型链)→ 指向p.prototype(构造函数的原型对象)
4、执行构造函数p中的代码
所以是新对象p调用了这个构造函数,构造函数的this不指向新对象p指向谁?
当计算一个对象创建表达式的值时,和对象初始化表达式通过{}创建对象的做法一样,JavaScript首先创建一个新的对象,然后,JavaScript通过传入指定的参数并将这个新对象当作this的值来调用一个指定的函数。这个函数可以使用this来初始化这个新创建对象的属性。
--摘自<<JavaScript权威指南>> 4.6节
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答918 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决
你说的只是四种情况之一。
构造函数的调用其中有
几步
是:参考