function people()
{
this.f1=function(){alert(321)}
}
function student()
{
}
function init()
{
st= new student() student.prototype.f1=function(){alert(11)}//这两句调换就会报错.
student.prototype= new people(); //这两句调换就会报错.为什么会这样的??
st2= new student()
st.f1();
st2.f1();
}
window.onload=init;
这句执行的时候 student以经不是原来的 student了 他继承了 people
一楼:student的原型是一个Object对象,若调换,则这个Object对象没有f1方法导致st.f1()报错。
---------------------------------------------------------------------------
student.prototype.f1=function(){alert(11)}//我这句不是添加了一个f1方法吗??
========================================================================
二楼:student.prototype= new people();
这句执行的时候 student以经不是原来的 student了 他继承了 people
----------------------------------------------------------------------------
它继承了people那 在 student.prototype.f1=function(){alert(11)}加上f1方法不行吗?
这句执行的时候 student以经不是原来的 student了 他继承了 people
----------------------------------------------------------------------------
它继承了people那 在 student.prototype.f1=function(){alert(11)}加上f1方法不行吗?当然行的啊 你第二个执行的 f1就是这个方法了
student.prototype= new people();
student.prototype.f1=function(){alert(11)} 这样后,student的prototype变成了people对象,加的f1方法在这个people对象上,但是st的类student,和它的prototype 即那个Object对象,还是没有f1方法
这样就会报错。如果用firefox,可以在后边写上alert(st.__proto__ == st2.__proto__)
student函数的原型对象变了,变成people对象了,也就是说女人爱上男人乙了,从这以后女人生的孩子的父亲就是男人乙了。 student.prototype.f1=function(){alert(11)}//这两句调换就会报错.
这个时候,女人还爱着第一个男人,当然第一个男人就有fl这个属性了,当然第一个孩子就继承了fl这个属性了。 student.prototype= new people(); //这两句调换就会报错.为什么会这样的??
这个时候,女人变心了,嫁给了第二个男人,但第一个孩子不能继承第二个男人的属性.但第二个孩子能继承,所以这个顺序不会报错,如果换顺序了,情况是这样的
student.prototype= new people(); //女人跑了,没有为第一个男人做任何贡献,就嫁给了第二个男人,所以第一个孩子就没有f1这个属性了。student.prototype.f1=function(){alert(11)}//女人改变了第二个男人的fl属性,所以第二孩子的属性也改变了。
哎扯远了点,呵呵