日期:2014-05-16  浏览次数:20372 次

使用Jquery如何实现继承
如题,

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

------解决方案--------------------
jquery的extend不是继承用的,是用来扩展对象的。。
你上面的代码只是让B.prototype = A.prototype而已
------解决方案--------------------
jquery的那两个extend是用来合并对象的
A.prototype中的自定义toString没有被拷贝到B中
你可以这样
var B = function(){};
B.prototype = new A()
http://code.usuishi.com/Web/ArticleView.aspx?ArticleID=176
------解决方案--------------------
所谓的公用是你自己控制的把 看你的‘公用’到什么范围了


外面式:

可以使用最顶层的 Object.prototype.privateFunction

var 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没有里面外面的概念 只有闭包吧