学科分类
目录
JavaScript网页编程

成员查找机制

当访问一个实例对象的成员的时候,JavaScript首先会判断实例对象有没有这个成员,如果有,就直接使用,如果没有,再判断原型对象中有没有这个成员。如果在原型对象中找到了这个成员,就使用,没有找到,就继续查找原型对象的原型对象,如果直到最后都没有找到,则返回undefined。下面我们通过代码演示对象成员的查找顺序。

 1  function Person() {

 2   this.name = '张三';

 3  }

 4  Person.prototype.name = '李四';

 5  var p = new Person();

 6  console.log(p.name);      // 输出结果:张三

 7  delete p.name;         // 删除对象p的name属性

 8  console.log(p.name);      // 输出结果:李四

 9  delete Person.prototype.name;  // 删除原型对象的name属性

 10 console.log(p.name);      // 输出结果:undefined

需要注意的是,成员查找机制只对访问操作有效,对于添加或修改操作,都是在当前对象中进行的。具体示例如下。

 1  function Person() {}

 2  Person.prototype.name = '李四';

 3  var p = new Person();

 4  p.name = '张三';

 5  console.log(p.name);          // 输出结果:张三

 6  console.log(Person.prototype.name); // 输出结果:李四

从上述代码可以看出,为对象p的name属性赋值“张三”后,原型对象中同名的name属性的值没有发生改变。

点击此处
隐藏目录