首页 > 关于原型继承的问题。在这里为什么打印出来的是前一段话,然后就是为什么Person.say是undefined??

关于原型继承的问题。在这里为什么打印出来的是前一段话,然后就是为什么Person.say是undefined??

<script type='text/javascript'>

function Person(name){
    this.name=name;
    this.say=function(){console.log('我说话了!');}
}

Person.prototype.say=function(){
    console.log('我不是Person说的话,我只是继承了他的原型里面的说话功能!');
}

var person=new Person();

person.say();

console.log(Person.say);
console.log(Person.prototype.say);

</script>


少年郎,我猜你是误解了这个 this 了吧...
建议你看下这里
也顺便安利下我读《JavaScript 高级程序设计》第六章的笔记 ~= ̄ω ̄=~

1. 第一个问题是因为在查找一个属性(或方法)时,首先当然先搜索对象实例自身,如果没找到再继续搜索 [[prototype]] 指针指向的原型对象,如果找不到再向上查找...

2. 第二个问题:为什么是 undefined

  // 当作普通函数使用
  Person("steve"); // 添加到 window 对象中
  window.say();    // 我说话了!
  window.name;     // steve

第一个console用person,因为Person不是一个对象
覆盖的话需要这样

Person = Person.prototype.say=function(){
    console.log('2');
}
【热门文章】
【热门文章】