一个文件 TestJs.js
内涵:ClassA=function(boj){
this.name;
}
ClassA.funA(){
return false;
}ClassB=function(boj){
this.name;
}
ClassB.funB(){
return false;
}
//问题如何在classA中引用b
就是说我要添加下面的方法
ClassA.funB(){return ClassB.funB();}以上代码同一文件,错误提示:对象不支持此方法
分别在html中使用没有错我
如下:
<html>
<script type='javascript/test' stc=TestJs.js></scrpt>
fuction Test()
{
alet(ClassA.funA());
alet(ClassB.funB());
<!--通过-->
}

解决方案 »

  1.   


    ClassA=function(boj){
    this.name;
    }
    ClassA.funA=function(){
    return false;
    }ClassB=function(boj){
    this.name;
    }
    ClassB.funB=function(){
    return false;
    }
    // 修改一下啊刚才写错了
      

  2.   


    //又发现一个每家function的
    ClassA.funB=function(){return ClassB.funB();}
      

  3.   

    如果是引用类的话,其实和方法没有什么区别在同一个js文件里没有什么关系,直接引用就可以了,但是不在同一个js文件中的话,直接引用就不行了,必须类似插件那样才行
      

  4.   


    //我没说明白吧!
    //就是 我要在B中添加方法,访问A中方法
    //出现错误,错误提示:对象不支持此方法
    A = function (){}
    A.a=function (val){reutrn var;}
    B=functioin(){}
    B.b=function(){return A.a(null);}//这里是一个问题,错误提示:对象不支持此方法
    以上出现在Js.js的相同文件中
      

  5.   


    还是多多熟悉javascript的prototype链吧,这是js oo的基础//你给的代码有一些错误,我在下面改了。
    var A = function (){};
    A.a   = function(val){ return val;)};/
    var B = function(){};
    B.b   = function(){return A.a(1)};
    alert(B.b());//1这样也没什么错误,但是我想不出这样写有什么意义,A被实例化后,实例化对象是不能顺着隐性prototype链找到a方法的。
      

  6.   

    利用call方法可以实现继承,
    很简单,var ClassA=function(){
    this.name="1";
    this.show1=function(){
        alert(this.name);
    }
    }var ClassB=function(){
         ClassA.call(this) 
    }
     
     
     var bb=new ClassB();
     bb.show1();
      

  7.   


    var a = function(n, an) {
    this.n = n;
    this.an = an;
    this.s = function() {
    alert([this.n, this.an]);
    }
    }
    a.prototype.as = function() {
    alert(this.an);
    }

    var b = function(n, bn) {
    this.n = n;
    this.bn = n;
    this.s = function() {
    alert([this.n, this.bn]);
    }
    a.call(this, 'a', 'aa'); //继承实例属性和方法
    }
    b.prototype.bs = function() {
    alert(this.bn);
    }

    for(var each in a.prototype) { ////继承原型属性和方法
    b.prototype[each] = a.prototype[each];
    }

    var c = new b('b', 'bb');
    c.s();
    c.bs();
    c.as();