为了账号安全,请及时绑定邮箱和手机立即绑定

js 繼承

js 繼承

wy57 2015-06-15 14:32:56
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方法。

查看完整回答
反对 回复 2015-06-16
  • 1 回答
  • 0 关注
  • 1518 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信