一个文件 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());
<!--通过-->
}
内涵: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());
<!--通过-->
}
ClassA=function(boj){
this.name;
}
ClassA.funA=function(){
return false;
}ClassB=function(boj){
this.name;
}
ClassB.funB=function(){
return false;
}
// 修改一下啊刚才写错了
//又发现一个每家function的
ClassA.funB=function(){return ClassB.funB();}
//我没说明白吧!
//就是 我要在B中添加方法,访问A中方法
//出现错误,错误提示:对象不支持此方法
A = function (){}
A.a=function (val){reutrn var;}
B=functioin(){}
B.b=function(){return A.a(null);}//这里是一个问题,错误提示:对象不支持此方法
以上出现在Js.js的相同文件中
还是多多熟悉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方法的。
很简单,var ClassA=function(){
this.name="1";
this.show1=function(){
alert(this.name);
}
}var ClassB=function(){
ClassA.call(this)
}
var bb=new ClassB();
bb.show1();
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();