function classA(){
this.name="Michael"
this.say=function(){alert(this.name)}
}function classZ(){
this.sayBye=function (){
alert(886)
}
}function classB(){
this.newMethod=classA;
this.newMethod();// delete this.newMethod;

this.newMethod=classZ;
this.newMethod();
//delete this.newMethod;
this.name='jackson';
this.sayName=function (){alert(this.name)}
}
b=new classB
a=new classA
z=new classZ
b.sayName();
a.say();不加delete this.newMethod超类的属性也没被覆盖啊?

解决方案 »

  1.   

    lz 在胡言乱语什么?!A Z B 之间根本没有任何继承关系可言!仔细去看看如何在 JS 中实现继承吧!delete 运算符
    从对象中删除一个属性,或从数组中删除一个元素。delete expressionexpression 参数是一个有效的 JScript 表达式,通常是一个属性名或数组元素。 说明
    如果 expression 的结果是一个对象,且在 expression 中指定的属性存在,而该对象又不允许它被删除,则返回 false。在所有其他情况下,返回 true。
      

  2.   

    B类继承了A和Z类啊
    我是参考这个书上写的啊
    http://hi.baidu.com/zgh555zgh/blog/item/c9e66fc74d54f41d9d163da8.html
      

  3.   

    javascript高级程序设计
    上的对象冒充我想问一下LZ
    以你上面的例子
    就你知道的 超类有哪些属性啊?????????????????????
      

  4.   

    不好意思,lz 的写法确实没有实现【原型继承】,实现的仅仅是实例属性和方法的添加,
    但是根本没有复制任何【原型】属性或方法!JS 中的对象是基于【原型】的,lz 还是先把【原型】的概念搞清楚以后再搞继承吧!
      

  5.   

    书上讲错了,还是我理解错了?郁闷啊function classA(){ 
    this.name="Michael" 
    this.say=function(){alert(this.name)} 

    超类属性就是name啊
      

  6.   

    name 属性和 say 方法只添加到了实例上,并未添加至原型上,这样写添加的只是实例属性或方法!俺只能说那书确实写滴比较烂,虽然没看过,不过这么讲确实很不负责任,垃圾书!
      

  7.   

    你说classA的属性是name  那name的直什么了???