嵌套在原型函数下的函数不会获得为原型定义的 this.variables。
var Person, p;
Person = function(name, age) {
  this.name = name;
  this.age = age;
};
Person.prototype.getInfo = function() {
  var innerFun;
  innerFun = function() {
    return this.name;
  };
  return "name: " + (innerFun()) + " age: " + this.age;
};
p = new Person('dork', 99);
console.log(p.getInfo());      // name:  age: 99
我认为由于每个函数都是一个对象,因此在每个函数定义中都会有所不同;但是下面的代码打破了这个逻辑。
var getInfo;
getInfo = function() {
  var display;
  this.name = 'dork';
  return display = function() {
    return this.name;
  };
};
console.log(getInfo()());     // dork
这种行为背后是否有逻辑,或者我应该把它作为一个规则并使用 call() 来解决这个问题?