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

新手构造函数初级问题

新手构造函数初级问题

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这么一串。总之非常感谢你的耐心讲解!
?
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 关注
  • 1321 浏览
慕课专栏
更多

添加回答

举报

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