Путаница в отношении объектно-ориентированного JavaScript - PullRequest
2 голосов
/ 02 августа 2011

Я практикую объектно-ориентированный синтаксис в JavaScript и у меня возникли некоторые проблемы. Это мой код:

<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>

Когда я загружаю страницу, innerHTML тела является точным текстом Name.protoype ("function () ... this.first + this.middle + this.last ..."). Что я тут не так сделал?

Ответы [ 4 ]

5 голосов
/ 02 августа 2011

Вам необходимо вызвать функции с помощью оператора ():

document.body.innerHtml = s.fullname();
2 голосов
/ 02 августа 2011

document.body.innerHTML = s.fullname; устанавливает innerHTML для функции s.fullname.

Если вы хотите установить для innerHTML значение, которое функция возвращает , вам нужно вызвать функцию:

document.body.innerHTML = s.fullname();
2 голосов
/ 02 августа 2011

Вам нужно вызвать вашу функцию: document.body.innerHTML = s.fullname();

Пример здесь .

2 голосов
/ 02 августа 2011

Вы назначаете функцию прототипу, поэтому вам нужно вызвать ее так:

<script type="text/javascript">
document.body.innerHTML = s.fullname() + ' ' + s.fullnamereversed();
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...