【发布时间】:2015-01-09 20:59:32
【问题描述】:
我编写了以下代码以探索 javascript 范围规则 对于使用 this 标识符的函数。我希望第二次调用 person.helloFunk() 打印名字“Marvin”和年龄“非常非常老”,因为我 在函数对象本身上创建了属性 navn 和 age ,但它没有。 相反,它重复相同的输出“你好,我是 zaphod,我 42 岁”。 那么为什么 this 指的是嵌入函数的对象而不是函数本身(也是一个对象)?
var sayHello = function() {
return "Hello, I'm " + this.navn + " and I'm " + this.age + " years old.";
}
var person = {navn: 'zaphod', age: 42};
person.helloFunk = sayHello;
console.log(person.helloFunk());
sayHello.navn = 'Marvin';
sayHello.age = 'verry verry old';
console.log(person.helloFunk());
console.log(person.helloFunk.navn);
console.log(person.helloFunk.age);
【问题讨论】:
标签: javascript scope