На правах: «А мужики ведь не знают» — покажу как выглядит сейчас поиск гугла в браузере Chrome:
Заметьте, той тёмной строки в верху страниц больше нет. Её заменили значком «Сервисы», слева от значка нотификации(колокольчика).
Более спорный момент — строка поиска осталась только в строке адреса. С одной стороны — незачем плодить одинаковые сущности, с другой — микрофон и кнопка настроек выглядят «одиноко».
В данном посте хочу рассказать как предпочитаю реализовывать наследование в объемном JavaScript приложении.
Допустим для проекта необходимо множество родственных и не очень классов.
Если мы попытаемся каждый тип поведения описать в отдельном классе, то классов может стать очень много. И у финальных классов может быть с десяток предков. В таком случае обычного JavaScript наследования через prototype может оказаться не достаточно. Например мне понадобилась возможность из метода вызывать аналогичный метод класса-предка. И захотелось создавать и наследовать некоторые статические свойства и методы класса. Такую функциональность можно добавить, вызывая для каждого класса ниже изложенную ф-ию extend:
Функция extend
cSO = {}; // Просто для отдельного пространства имен.
cSO.extend = function(child, parent, other) {
if(parent) {
var F = function() {};
F.prototype = parent.prototype;
child.prototype = new F();
child.prototype.constructor = child;
child.prototype.proto = function() {
return parent.prototype;
}
// Пока все стандартно.
} else {
child.prototype.proto = function() {
return;
}
}
/*
* У классов есть параметр stat, предназначенный для статических ф-ий и данных.
* Он доступен через _class.stat или из объекта(экземпляра) класса через this.stat.
* Потомки могут обращаться к статическому методу предка, для этого их нужно
* объявлять так: _class.stat.prototype.myStaticMethod = function() {...