Как описательно определить свои функции JS

Цель и задачи

Поскольку JavaScript является таким гибким языком, использование шаблонов на стороне сервера и клиента (лучшие практики) становится важным. Прочитав книгу Стояна Стефанова Шаблоны JavaScript и написав много кода на JavaScript, я научился использовать описательные, а не выразительные функции. Я объясню почему так ясно и просто, как только смогу.

Выражение функции //анти-шаблон

var sayHello;
sayHello; //undefined
sayHello(); //undefined is not a function
var sayHello = function() {
console.log(“Hellllooo!!!”);
};

Объявление функции // шаблон

sayHello(); // Hellllooo!!!
function sayHello () {
console.log(“Hellllooo!!!”);
};

В объявлении функции функция поднимается на вершину кучи, возвращает свой результат и может быть вызвана до определения своей функции. Это помогает избежать сложного поведения.

Конструкторы — это функции, которые создают экземпляры новых объектов. Думайте о них как о классе. При вызове конструктора создается новый объект со свойствами конструктора.

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

var Person = function (name, age) {
this.name = name;
this.age = age;
};
function SanFranciscoPerson(name, age) {
Person.call(this, name, age); //uses Person’s properties to create San FranciscoPerson
this.location = “San Francisco”;
this.constructor = Person; //sets this object’s constructor as Person
};
jim = new SanFranciscoPerson(“Jim”, 29);
jim; //SanFranciscoPerson {name: “Jim”, age: 29, location: “San Francisco”, constructor: function}

Что такое конструктор этого объекта?

jim.constructor;

//function (name, age) {
// this.name = name;
// this.age = age;
//}

Если бы мы использовали описательное определение функции, у нас было бы имя конструктора в вызове конструктора.

jim.constructor;

//function Person (name, age) {
// this.name = name;
// this.age = age;
//}

Удачного кодирования.