Я пытаюсь научиться применять объектно-ориентированные принципы к моему программированию на Javascript, однако я не совсем понимаю, как объектные "поля" или "методы" работают в Javascript.Я понимаю, что свойства могут быть динамически назначены объектам (функциям) Javascript, но я не понимаю, как применять это на практике.
Рассмотрим следующий пример кода:
<head>
<script type="text/javascript">
var foo = function()
{
this.bar = "abc";
alert(this.bar);
}
foo.start = function()
{
alert(foo.bar);
}
</script>
</head>
<body>
<div align='center'>
<input type="submit" onclick = "foo(); foo.start();">
При нажатии кнопки отправки отображается сообщение abc
, за которым следует undefined
.
Этот вывод противоречит моему пониманию и намерению.Насколько я понимаю, строка this.bar = "abc"
создает новое свойство (или поле) bar
объекта foo
и присваивает ему значение "abc"
.Однако когда я вызываю другой метод foo
, свойство bar
, похоже, исчезло.
Итак, почему foo.bar
не определен, когда я получаю к нему доступ в foo.start
?