var Mammal=function(name){ this.name=name; }; Mammal.prototype.get_name=function(){ return this.name; }; Mammal.prototype.says=function(){ return this.saying || ""; }; var myMammal=new Mammal("Herb the Mammal"); var name=myMammal.get_name();alert(name)Function.method("inherits",function(Parent){ this.protetype=new Parent(); return this; });//這裡報錯——沒有該方法。這個Function.method()方法不應該是系統方法嗎? var Cat=function(name){ this.name=name; this.saying="meow"; } .inherits(Mammal) .method("purr",function(n){ var i,s=""; for(i=0;i<n;i+=1){ if(s){ s+="-"; } s+="r"; } return s; }) .method("get_name",function(){ return this.says()+" "+this.name+" "+this.says(); }); var myCat=new Cat("Henrietta"); var says=myCat.says();alert("says"+says) var purr=myCat.purr(5);alert(" purr"+purr) var name=myCat.get_name();alert(" name"+name)
1 回答
已采纳
cwtxz
TA贡献5条经验 获得超0个赞
你没有真正理解js继承。js里面的函数是怎么来的?其实是通过Function构造器产生的,当我们创建函数对象时,该对象会产生一段类似于这样的代码:this.prototype={constructor:this}。method使我们人为定义的方法,该方法是一个辅助函数,代码如下:
Function.prototype.method=function(name,func){
this.prototype[name]=func;
return this;
}
定义了该辅助函数之后,意味着所有的函数对象都可以调用method方法,而Funtion对象本身也是一个函数对象,因而也可以调用method方法。
添加回答
举报
0/150
提交
取消