Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Есть ли разница? (https://javascript.ru/forum/misc/4840-est-li-raznica.html)

JSprog 24.08.2009 19:37

Цитата:

Сообщение от Dmitry A. Soshnikov
};

Ошибка не в этом но вообще-то в конце составной инструкции точку с запятой не ставят

JSprog 24.08.2009 20:12

Все ущли завтро договорим=)

Dmitry A. Soshnikov 24.08.2009 20:33

Цитата:

Сообщение от JSprog
У меня твой код вообще не работает
FireBug выдаёт ошибку на 4 строке
this.prototype.getX = funciton () {\n

Опечатался в слове "function", вот так правильно:

function A(x) {
  this.x = x;
  this.getX = function () {
    return this.x;
  };
}

var a = new A(10);
var b = new A(20);

// ну тут понятно
alert(a.hasOwnProperty('x')); // true
alert(b.hasOwnProperty('x')); // true

// а здесь почему, если ты говоришь, что
// метод getX - один на оба объекта
alert(a.hasOwnProperty('getX')); // true
alert(b.hasOwnProperty('getX')); // true


Цитата:

Сообщение от JSprog
и всё...

Т.е. метод нельзя записать в прототип? Почему, что мешает? Не понял этот момент.

Цитата:

Сообщение от JSprog
Ошибка не в этом но вообще-то в конце составной инструкции точку с запятой не ставят

Ошибка была в опечатке слова function. А точка с запятой там нужна ;)

Цитата:

Сообщение от JSprog
Все ущли завтро договорим=)

Ок, может B~Vladi что-нибудь прояснит тогда.

JSprog 24.08.2009 20:35

Цитата:

Сообщение от Dmitry A. Soshnikov
Ошибка была в опечатке слова function. А точка с запятой там нужна

не нужна

Dmitry A. Soshnikov 24.08.2009 20:41

Цитата:

Сообщение от JSprog
не нужна

Нужна-нужна.

// так будет ошибка
var a = function () {} var b = 10;

// а так - правильно
var a = function () {}; var b = 10;

Вообще, точка с запятой нужна обязательно после некоторых инструкций, просто парсер сам вставляет точку с запятой в случае перевода строки. Если же перевода не будет (как в примере выше) - будет ошибка, поэтому точка с запятой там нужна.

JSprog 24.08.2009 20:43

Вы в свой код пробовали добавить?
alert(a.getX)

Dmitry A. Soshnikov 24.08.2009 20:47

Цитата:

Сообщение от JSprog
Вы в свой код пробовали добавить?
alert(a.getX)

Да, выдаёт, что это функция. Неверно?

А если добавить:

alert(a.getX === b.getX); // false

то явно видно, что это не один и тот же метод. Что-то я запутался. Может, всё-таки, тут надо прототип как-то задействовать, чтобы оба объекта имели один и тот же метод? Ведь, если в прототипе свойство расшаривается одно на всех, то, может, и метод тоже будет? Правда, я так и не понял, почему нельзя в прототип метод положить?

JSprog 24.08.2009 20:48

У меня с использованием
alert(a.getX)
просто выводитса код функции

JSprog 24.08.2009 20:49

<html>
<body>
 <script language="javascript" type="text/javascript">
function A(x) {
  this.x = x;
}
A.prototype.getX=function(){return 15}
 var a = new A(10);
var b = new A(20);
 // ну тут понятно
alert(a.hasOwnProperty('x')); // true
alert(b.hasOwnProperty('x')); // true
alert(a.isPrototypeOf('x'));//false
// а здесь почему, если ты говоришь, что
// метод getX - один на оба объекта
alert(a.hasOwnProperty('getX')); // false
alert(b.hasOwnProperty('getX')); // false
alert(a.isPrototypeOf('getX'));
alert(a.getX)
</script>
</body>
</html>

Dmitry A. Soshnikov 24.08.2009 20:50

Цитата:

Сообщение от JSprog
У меня с использованием
alert(a.getX)
просто выводитса код функции

А это срабатывает метод .toString, который есть у каждого объекта. Его можно перезаписать, но в случае функций, он выдаёт, код. Хотя, это зависит от реализаций.


Часовой пояс GMT +3, время: 16:32.