新手构造函数初级问题

<!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;
            }


Ni14
浏览 1353回答 3
3回答

一瞬儿光

第一个问题: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;但是这样做的好处是,如果我们不只是想得到这个面积,而且更多更复杂的运算,那么用一个匿名方法肯定是更方便的。

xiangyunlcs

r.area  是调用属性,后面加个()才是调用方法   ====》 alert(r.area())

bcp9527

this.area返回的是一个function,你试试alert(r.area());  应该就可以了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript