给出以下代码:
var User = function(name) {
this.name = name;
};
User.prototype.sayHello = function() {
console.log('Hi my name is ' + this.name + '.');
};
var user1 = new User('Bob');
user1.sayHello();
到目前为止我学到的是,在函数语句中使用的this
关键字指向全局对象,并且在方法中使用时,它在词法上位于其中。
我也知道new
关键字创建一个空对象并调用构造函数并让它指向该新对象。
但我不明白的是,因为user1不拥有sayHello
函数,
它上升了原型链。
但是原型中的函数如何知道在哪里引用this.name
?
控制台中的输出为:Hi my name is Bob.
答案 0 :(得分:0)
因为如果你在user1.name上执行console.log,它是从User对象创建的,你将获得Bob作为输出,然后调用sayHello引用user1,因此this.name解析为Bob
var User = function(name) {
this.name = name;
};
User.prototype.sayHello = function() {
console.log('Hi my name is ' + this.name + '.');
};
var user1 = new User('Bob');
console.log(user1.name)
user1.sayHello();