开发者

Confusion about object oriented javascript

I'm practicing object oriented syntax in javascript and am having some problems. This is my code:

<html>
<head>
     <script type="text/javascript">
          function Name(first,mid,last) {
               this.first = first;
               this.middle = mid;
               this.last = last;
          }
          Name.prototype.fullname = function () {
               return this.first + " " + this.middle + " " + this.last;
          }
          Name.prototype.fullnamereversed = function() {
               return this.last + " " + this.middle + " " + this.first;
          }
          var s = new Name("James","Harlow","Smith")
</script>
</head>
<body>
     <script type="text/javascript">
          document.body.innerHTML = s.fullname;
          document.body.innerHTML = s.fullnamereversed;
     </script>
</body>
</html>

When I load the page, the innerHTML of the body is the exact text of Name开发者_JS百科.protoype ("function ()... this.first + this.middle + this.last..."). What have I done wrong here?


You need to call the functions with the () operator:

document.body.innerHtml = s.fullname();


You are assigning a function to the prototype, therefore you need to call it as such:

<script type="text/javascript">
document.body.innerHTML = s.fullname() + ' ' + s.fullnamereversed();
</script>


You need to invoke your function: document.body.innerHTML = s.fullname();

Example here.


document.body.innerHTML = s.fullname; sets the innerHTML to the function s.fullname.

If you want to set the innerHTML to what the function returns, then you need to actually call the function:

document.body.innerHTML = s.fullname();
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜