Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Следует ли в вызовеrunсохранять введённые значения как свойства объекта?




При этом метод sum() будет без параметров, и обращения в нём будут к this.a,this.b.

Свойства объекта могут со временем изменяться. Используйте это в следующей задаче.

Напишите функцию-конструктор Adder(startingValue).
Объекты, которые она создает, должны хранить текущую сумму и прибавлять к ней то, что вводит посетитель.

Более формально, объект должен:

  • Хранить текущее значение в своём свойстве value. Начальное значение свойства value ставится конструктором равным startingValue.
  • Метод addInput() вызывает prompt, принимает число и прибавляет его к свойству value.
  • Метод showValue() выводит текущее значение value.

Таким образом, свойство value является текущей суммой всего, что ввел посетитель при вызовах метода addInput(), с учетом начального значенияstartingValue.

var adder = new Adder(1); // начальное значение 1

 

adder.addInput(); // прибавит ввод prompt к текущему значению

 

adder.addInput(); // прибавит ввод prompt к текущему значению

 

adder.showValue(); // выведет текущее значение

Приватные свойства

Локальные переменные функции-конструктора, с одной стороны, доступны вложенным функциям, с другой — недоступны снаружи.

В объектно-ориентированном программировании это называется «приватный (private) доступ».

Например, в коде ниже к name имеет доступ только метод say. Со стороны объекта, после его создания, больше никто не может получить name.

 

function User(name) {

 

 

 

this.say = function(phrase) {

 

alert(name + ' сказал: ' + phrase);

 

};

 

 

 

}

 

 

 

var user = new User('Вася');

Если бы name было свойством this.name — можно было бы получить его как user.name, а тут — локальная переменная. Приватный доступ.

Замыкания никак не связаны с this

Доступ через замыкание осуществляется к локальной переменной, находящейся «выше» по области видимости.

А this содержит ссылку на «текущий» объект — контекст вызова, и позволяет обращаться к его свойствам. С локальными переменными это никак не связано.

Приватные свойства можно менять, например ниже метод this.upperCaseName() меняет приватное свойство name:

 

function User(name) {

 

 

 

this.upperCaseName = function() {

 

name = name.toUpperCase(); // <-- изменяет name из User

 

};

 

 

 

this.say = function(phrase) {

 

alert(name + ' сказал: ' + phrase); // <-- получает name из User

 

};

 

 

 

}

 

 

 

var user = new User('Вася');

 

 

 

user.upperCaseName();

 

 

 

user.say("Да здравствует ООП!") // ВАСЯ сказал: Да здравствует ООП!

Поделиться:

Дата добавления: 2015-09-15; просмотров: 63; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты