为什么在对象上调用方法时删除`this`会产生不可预测的结果?

时间:2018-04-03 23:19:43

标签: javascript javascript-objects

以下剪辑已从MDN

修改
const person = {
  name: ['Bob', 'Smith'],
  age: 32,
  gender: 'male',
  interests: ['music', 'skiing'],
  bio: function() {
    console.log(name[0] + ' ' + this.name[1] + ' is ' + this.age + ' years old. He likes ' + this.interests[0] + ' and ' + this.interests[1] + '.');
  },
  greeting: function() {
    alert('Hi! I\'m ' + name[0] + '.');
  }
};

person.bio();
person.greeting();

请注意,我从this之前删除了name[0]。当我这样做时,Bob输出为J? WTF? :|

甚至没有资本' J'代码中的任何地方?发生了什么???

1 个答案:

答案 0 :(得分:-1)

在jsbin上,如果你console.log(name),你将获得"JS Bin Output "name[0]就是"J"

http://jsbin.com/zaquvipuma/1/edit?js,console