代码改变世界

JavaScript 对象的值查找

2015-02-12 14:35  塔拉  阅读(810)  评论(0)    收藏  举报

Javascript对象的值查找规则:

  • 查找顺序
  1. 该对象本身 
  2. 该对象构造函数的prototype
  3. 该对象构造函数的prototype 的构造函数的prototype,以这样的方式沿原型链条逐级查找, 直至Object的prototype
  • 整个查找链条中都没有找到则返回 undefine
  • 查找过程中一旦找到则返回找到的值
 1 Object.prototype.foo = 'bar';
 2 
 3 function People() {}
 4 People.prototype.kind = 'People';
 5 
 6 function Chinese() {}
 7 Chinese.prototype = new People();
 8 Chinese.prototype.constructor = Chinese;
 9 Chinese.prototype.country = 'China';
10 Chinese.prototype.name = 'Chinese';
11 
12 var zhangsan = new Chinese();
13 zhangsan.name = 'zhang san';
14 
15 console.log(zhangsan.name); // zhang san, from zhangsan object,[推测] --> Chinese.prototype中对name的设定被不会被查找
16 console.log(zhangsan.country); // China, from Chinese's prototype
17 console.log(zhangsan.kind); // People, from Person's prototype
18 console.log(zhangsan.foo); // bar, from Object's prototype
19 console.log(zhangsan.age); // undefine