Итак, что мы выучили:
JS. Объекты как ассоциативные массивы.
Функции. Задание в виде конструктора и литерала.
__________________________________________________
}
правильное:
}
Шаблоны вызова функций.
initialize.apply(person, ["Some", "Person"]); // this - person
alert(person.lastname);
Механизмы наследования:
var employee = new employee("Andrey", "Drebot", "Software Developer");
ООП в Javascript. Основные практики и подходы к реализации ООП с помощью Javascript на кошках.
(ООП нужно чтоб решить проблему и избежать изучения предметной области - чтоб накормить кота, не вникая, как у него устроена пищевая трубка)
Наследование. У кота есть все признаки животного.
Полиморфизм. В дочерних классах можно переопределять свойства базового класса.
function Animal(name) {
Инкапсуляция . Не только скрывает данные, но также показывает как объект должен работать.
2) Модуль - кусок кода, который решает задачу и скрывает внутренюю реализацию.
Module pattern - в каждой ф-ции в конце будет явный return ==> удобно для полимрфозма и наследования
Revealing module pattern - все сначала объявляется как приватные переменные, а в конце перечисляется публичный интерфейс ==> чаще используется
3) Принцип Солид - набор советов-практик-рекомендаций "как надо"
S - Single responsibility principle - у класса не больше одной ответственности
Что я использовала, при выполнении #задания1 заяц-волк? О_о мало что.. не зря назвала свое приложение madforest. умалишенный wood. предсказуемость и надежность под открытым вопросом. in progress. нихрена нормально не работает.
зато типа я знаю как надо и как должно. прямо я умничка ахах.
JS. Объекты как ассоциативные массивы.
Функции. Задание в виде конструктора и литерала.
function sayHello() {
alert("Hi there! I'm a function!");
}
var sayHello = function () {
alert("Hi there! I'm a function!");
}__________________________________________________
неправильное навешивание функции обработчика:
for (var i = 0; i < 10; i++) {
var div = document.createElement('div')
div.innerHTML = i
div.onclick = function () {
alert(i);
}
document.getElementById(parentId).appendChild(div)
}
правильное:
for (var i = 0; i < 10; i++) {
var div = document.createElement('div')
div.innerHTML = i
div.onclick = function (x) {
return function () {
alert(x);
}
}(i)
document.getElementById(parentId).appendChild(div)
}
Шаблоны вызова функций.
// Шаблон вызова метода:
var question = {
title: "Question title",
updateTitle: function (val) {
this.title = val; // this - question
}
}
// Шаблон вызова функции:
var question = {
title: "Question title",
updateTitle: function (updatedTitle) {
function handler(value) {
this.title = value; // this - window
}
handler(updatedTitle);
}
}
question.updateTitle("updated title");
alert(question.title)
alert(window.title)
// Шаблон вызова метода apply:
var person = {};
function initialize(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
initialize.apply(person, ["Some", "Person"]); // this - person
// Шаблон вызова конструктора:
function Person(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
var person = new Person("Some", "Person");
alert(person.firstname);
alert(person.lastname);Механизмы наследования:
function Person(firstname, lastname) {
this.firstname = firstname;
this.lastname = lastname;
}
function Employee(position) {
this.position = position;
}
var person = new Person("Andrey", "Drebot");
Employee.prototype = person;
var employee = new Employee("Software Developer");
function person(firstname, lastname) {
return {
firstname: firstname,
lastname: lastname
};
}
function employee(firstname, lastname, position) {
var p = person(firstname, lastname);
p.position = position;
return p;
}
var employee = new employee("Andrey", "Drebot", "Software Developer");
ООП в Javascript. Основные практики и подходы к реализации ООП с помощью Javascript на кошках.
(ООП нужно чтоб решить проблему и избежать изучения предметной области - чтоб накормить кота, не вникая, как у него устроена пищевая трубка)
Наследование. У кота есть все признаки животного.
function Animal(name) {
var self = {
name: name
};
this.greet = function () {
alert("I'm " + self.name);
}
}
function Cat(name) {
Animal.call(this, name);
}
var cat = new Cat('The Cat');
cat.greet();
function Animal(name) {
this.greet = function () {
alert("I'm " + this.name);
}
}
function Cat(name) {
Animal.call(this);
this.name = name;
}
var cat = new Cat('The Cat');
cat.greet();Инкапсуляция . Не только скрывает данные, но также показывает как объект должен работать.
function Cat(name) {
var self = {
name: name
};
this.sayMeow = function () {
alert("Meow! I'm " + self.name);
}
}2) Модуль - кусок кода, который решает задачу и скрывает внутренюю реализацию.
Module pattern - в каждой ф-ции в конце будет явный return ==> удобно для полимрфозма и наследования
Revealing module pattern - все сначала объявляется как приватные переменные, а в конце перечисляется публичный интерфейс ==> чаще используется
3) Принцип Солид - набор советов-практик-рекомендаций "как надо"
S - Single responsibility principle - у класса не больше одной ответственности
O - Open/closed principle - классы должны быть закрыты для изменений
L - Liskov substitution principle - теплое и мягкое, как белое и пушистое - не родственники
I - Interface segregation principle - интерфейс у качественно разных объектов должен быть разделен и не наследоваться от единого объекта.
D - Dependency inversion principle - хз
4) Knockout - фреймворк основанный на MVVM паттернe.
....
зато типа я знаю как надо и как должно. прямо я умничка ахах.
Немає коментарів:
Дописати коментар