Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Конструкторы #7

Closed
IgorKulishov opened this issue Feb 12, 2018 · 8 comments
Closed

Конструкторы #7

IgorKulishov opened this issue Feb 12, 2018 · 8 comments
Assignees

Comments

@IgorKulishov
Copy link
Collaborator

IgorKulishov commented Feb 12, 2018

Конструкторы

Конструкторы - как способ унаследования свойств и методов объектов.

Представим в качестве примере что у нас есть пустой образец трудового договора и нам надо создать и заполнить графы для разных профессий - мы можем создать сначала конструктор и использовать его как образец и далее использовать его в качестве темплейта и заполнить новые объекты для каждой професии уже со специфическими свойствами.

Рекомендую прочитать "Конструкторы" статью с книги: https://habrahabr.ru/post/241587/

Приведу примеры похожие с книги (только рабочий вместо кролика).

Конструктор это ф-ция, которая имеет несколько встроенных свойств и методов которые будут иметь унаследованные новые объекты. Каждое своейство объекта или его метод описывается при помощи слова "this". Коструктор не используется сам по себе, а обычно служит для генерации других объекторв при помощи слова new поставленного перед конструктором.

// сначала создадим конструктор 
function Employee(type, activity) {
    this.type = type;
    this.activity = function() {
        console.log(this.type + ' does : ' + activity)
    }
}

// создадим/сгенерируем новые объекты
var constructionWorker = new Employee('construction', 'build roof');
//read results of property **type**
constructionWorker.type;
//read results of method **activity**
constructionWorker.activity();
@IgorKulishov
Copy link
Collaborator Author

Создай и добавь свой пример рабочего на базе конструктора.
Так же можешь создать свой пример конструктора.
Я сознательно не объясняю тебе тему про prototype. Объясню после выполнения задания.

@g1er
Copy link
Owner

g1er commented Feb 12, 2018

Ну, вот, например, создал по своей стихии такой конструктор:

function Swimmer(style, distance) {
	this.style = style;
	this.distance = function() {
		console.log("This swimmer prefer " + distance + " " + this.style)
    }
}

var bflySwimmer = new Swimmer("butterfly", "200");
bflySwimmer.style;
bflySwimmer.distance();

Только одну вещь не совсем понял. Если я убираю предпоследнюю строку bflySwimmer.style, то результат у меня выходит такой же, как если я эту строку оставлю. В чем тогда ее предназначение?

@g1er
Copy link
Owner

g1er commented Feb 12, 2018

function Country(c_name, options) {
	this.c_name = c_name;
	this.options = function() {
		console.log(this.c_name + " is " + options + " than WADA & IOC sanctions!")
    }
}

var country_1 = new Country("Russia", "much stronger");
country_1.c_name;
country_1.options();

@IgorKulishov
Copy link
Collaborator Author

IgorKulishov commented Feb 13, 2018 via email

@g1er
Copy link
Owner

g1er commented Feb 13, 2018

Ну, примерно понятно. И еще один вопрос.
Получается, что, создавая конструктор Swimmer я могу задать в скобках любые свойства и методы (style, distance, age, speed, sportswear, .......) и в любом количестве тех и других (2 свойства и 3 метода, или 5 свойств и 1 метод и т.д.) и потом определить их внутри для дальнейшего создания объектов?

@IgorKulishov
Copy link
Collaborator Author

IgorKulishov commented Feb 14, 2018

Да, совершенно верно. Мы вначале создаем конструктор(ы) с любым набором свойств и методов и далее используем этот конструктор(ы) как лекало для создания одного или множества объектов на основе этих/этого конструктора(ов), подставляя слово new перед конструктором и подставляя значения аргументов в конструктор(ов).

@IgorKulishov
Copy link
Collaborator Author

IgorKulishov commented Feb 14, 2018

В объектно-ориентированных языках таких как Java/C# создание класса (конструктора) является основным правилом: 1) т.е. мы вначале создаем классы (CarDeatails, ProductDescription, CookingInstruction и т.д.) в каждом их которых мы определяем набор свойств и методов определяющих набор будующего объекта (переменной). 2) Далее мы создаем новые объекты (переменные) с набором свойств определенных в классах (конструкторах) подставляя слово new перед конструктором и подставляя значения аргументов в классы (конструктор(ов)).

@IgorKulishov
Copy link
Collaborator Author

IgorKulishov commented Feb 14, 2018 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants