如题,var A = function(){};
A.prototype.toString = function(){return "aaa"};var B = function(){};$.fn.extend(B, A);var b = new B();
但是 console.log(b instanceof A);//false上面的继承只是把toString方法copy到了B中,但instanceof却为false,如何让属性方法也有,并且instanceof也为true

解决方案 »

  1.   

    jquery的extend不是继承用的,是用来扩展对象的。。
    你上面的代码只是让B.prototype = A.prototype而已
      

  2.   

    用原生的JavaScript吧
      

  3.   

    jquery的那两个extend是用来合并对象的
    A.prototype中的自定义toString没有被拷贝到B中
    你可以这样
    var B = function(){};
    B.prototype = new A()
    http://code.usuishi.com/Web/ArticleView.aspx?ArticleID=176
      

  4.   

    B.prototype = new A()对instanceof有效,暂时先用着,不知道会不会有什么副作用;最后问个问题结贴, 不同的prototype中的方法,如何使用公用的属性或方法,应该定义在哪?
    肯定不定义在类外面的吧,在类里面如何定义呢?var A = function(){};
    A.prototype.toString = function(){  privateFunction();};A.prototype.toString222 = function(){privateFunction();};
      

  5.   

    所谓的公用是你自己控制的把 看你的‘公用’到什么范围了
    外面式:可以使用最顶层的 Object.prototype.privateFunctionvar A = function(){};
    A.prototype.toString = function(){ this.privateFunction();};里面式:(fucntion(me){function privateFunction(){}me.A = function(){};
    A.prototype.toString = function(){ privateFunction();};A.prototype.toString222 = function(){privateFunction();};  })(window);
    js没有里面外面的概念 只有闭包吧