猿问

js 繼承

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)


wy57
浏览 1519回答 1
1回答

cwtxz

你没有真正理解js继承。js里面的函数是怎么来的?其实是通过Function构造器产生的,当我们创建函数对象时,该对象会产生一段类似于这样的代码:this.prototype={constructor:this}。method使我们人为定义的方法,该方法是一个辅助函数,代码如下:        Function.prototype.method=function(name,func){            this.prototype[name]=func;            return this;            }定义了该辅助函数之后,意味着所有的函数对象都可以调用method方法,而Funtion对象本身也是一个函数对象,因而也可以调用method方法。
随时随地看视频慕课网APP
我要回答