亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

新手構造函數初級問題

新手構造函數初級問題

Ni14 2016-12-09 16:31:22
<!DOCTYPE?html> <html> <head> ????<meta?charset="UTF-8"> ????<title>構造函數</title> ????<script> ????????function?Rect(w,h) ????????{ ????????????this.width=w; ????????????this.height=h; ????????????this.area=function() ????????????{ ????????????????return?this.width*this.height; ????????????} ????????} ????????var?r=new?Rect(5,10); ????????alert(r.area) ????</script> </head> <body> </body> </html>請問我在視頻上看的這樣正確的應該是求出r.area的值也就是50. 但我為什么彈出的是function() ????????????{ ????????????????return?this.width*this.height; ????????????}這個函數本身啊?還有個問題就是,在上面的構造函數中 ?定義完this.width=w; this.height=h;之后定義this.area的時候為什么不能直接定義this.area=this.width*this.height啊 ?視頻上非要套個函數也就是這樣this.area=function() ????????????{ ????????????????return?this.width*this.height; ????????????}
查看完整描述

3 回答

已采納
?
一瞬兒光

TA貢獻178條經驗 獲得超70個贊

第一個問題:

this.width=w;//這是屬性
this.height=h;//這是屬性;?

this.area=function(){

????????????????return?this.width*this.height;
????????????};//這是方法(匿名函數)

var?r=new?Rect(5,10);//r是對象;

對象的屬性訪問方式是Obj.屬性;

對象的方法訪問方式是Obj.方法();

方法必須加()才表示執行。

所以應該是:alert(r.area());

第二個問題:

可以使用this.area=this.width*this.height,甚至可以不要this.area這個方法,直接使用area = r.width*r.height;但是這樣做的好處是,如果我們不只是想得到這個面積,而且更多更復雜的運算,那么用一個匿名方法肯定是更方便的。

查看完整回答
2 反對 回復 2016-12-09
  • Ni14
    Ni14
    謝謝你!但是如果改成this.area=this.width*this.height難道就不能用來求別的了嗎? this.width*this.height并沒有指定是r.width或者r.height. 我還沒有接觸到方法 所以不是特別理解,
  • 一瞬兒光
    一瞬兒光
    說了半天,你也沒理解我的意思。this是js中根據上下文指向對象本身,也就是你實例化后的r對象。所以r.width就是你構造函數里的this.width。你可以用this.area=this.width*this.height的方法,這樣寫沒錯。但是復雜的運算這樣寫不方便明白嗎,比如給定一個橢圓的參數,你怎么求它的面積,這么寫是不是就不方便了。
  • Ni14
    Ni14
    把this.area=this.width*this.height用一個函數封裝起來就是為了如果再進行其他運算的時候,可以不用寫this.area=this.width*this.height這么一串??傊浅8兄x你的耐心講解!
?
xiangyunlcs

TA貢獻5條經驗 獲得超7個贊

r.area ?是調用屬性,后面加個()才是調用方法 ? ====》?alert(r.area())


查看完整回答
反對 回復 2016-12-09
?
bcp9527

TA貢獻4條經驗 獲得超0個贊

this.area返回的是一個function,你試試alert(r.area()); ?應該就可以了

查看完整回答
反對 回復 2016-12-09
  • 3 回答
  • 0 關注
  • 1409 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號