Домашнее задание по JavaScript 4. ООП

Задача №1

Имеется код:

var user = {};
var newFirstName = "boris";
var newFirstName2 = "basil";
function setNewName(newFirtsName) {
  var capitalizedName = newFirstName[0].toUpperCase() +
    newFirstName.substr(1);
  var prettyfiedName = "-=" + capitalizedName + "=-";
  this.name = prettyfiedName;
}
user.setNewName = setNewName;
user.setNewName(newFirstName); // user.name = "-=Boris=-", OK
user.setNewName(newFirstName2); // user.name = "-=Boris=-", ???

Почему при вызове с другим параметром значение имени пользователя не изменилось? Как исправить код?

Задача №2

Написать функцию-конструктор, все созданные объекты которой равны между собой.

var Clone = function() {...};
var clone1 = new Clone;
var clone2 = new Clone;
clone1 == clone2 // true

Задача №3. Спам 2.0

Написать функцию-конструктор, которая принимает один параметр - время в миллисекундах, и записывает в свойства возвращаемого объекта-спамера. У объекта также есть метод startSpam, которому передается строка для спама. После вызова метода спамер с указанным временным промежутком спамит в консоль.Примерный результирующий вывод в консоль с расшифровкой по времени приведен ниже:

>var spammer1 = new Spammer(1000);
>spammer1.startSpam('first');
first // 00:00:01
first // 00:00:02
>var spammer2 = new Spammer(2000);
>spammer2.startSpam('second');
first // 00:00:03
first // 00:00:04
second // 00:00:04
first // 00:00:05
first // 00:00:06
second // 00:00:06

Задача №4

Написать функцию-конструктор, которая принимает три параметра: тип домашнего животного, кличку (строки) и год рождения (целое). У созданного объекта:

var Pet = function() {...};
var myPet = new Pet("cat", "Barsik", 2015);
for(var key in myPet) { console.log(key); } // type, name
myPet.type = "dog";
myPet.name = "Murzik";
myPet.birthYear = 1700;
console.log(myPet.info); // "cat Murzik: 2 years"

Задача №5

Написать функцию-конструктор, которая принимает параметр год и записывает его в свойство объекта. У созданного объекта:

var Years = function() {...};
var year = new Years(2017);
alert(year); // "2017, не високосный"
2017 - year // 0

Указания по выполнению задания

Ссылка на полную версию этой страницы