- •60. Немецкая модель корпоративного управления.
- •62. Корпоративная культура. Определение функции. Практические методы внедрения корпоративной культуры.
- •13 Определение функции
- •13.1 Определения
- •13.1.1 Тождественные правила грамматики
- •13.1.2 Объединённые объекты
- •13.2 Создание объектов типа Function
13.1.2 Объединённые объекты
Когда два или более объектов Function объединяются, у них появляются следующие особенности:
Каждый раз, когда создаётся или устанавливается не-внутреннее свойство объекта O, соответствующее свойство немедленно создаётся или устанавливается в такое же значение у всех объектов, объединённых с O.
Каждый раз, когда удаляется не-внутреннее свойство объекта O, соответствующее свойство немедленно удаляется у всех объектов, объединённых с O.
Если объекты O и P объединены, для них операторы сравнения == и ===дают положительный результат.
Объединение транзитивно и симметрично, так что если объединить объектыO и P и объединить объекты P и Q, то объекты O и Q тоже автоматически окажутся объединёнными.
ЗАМЕЧАНИЕ Два или более объединённых объекта практически неразличимы, за исключением того, что они могут обладать различными внутренними свойствами. Данная спецификация определяет только одно внутреннее свойство, которое может различаться у таких объектов - [[Scope]].
Объединённые объекты используются в данном стандарте как средство для точного описания поведения языка. Не предполагается, что они будут использоваться в качестве образца для практической реализации объектов типа Function. Вместо этого рекомендуется, чтобы реализация самостоятельно определяла случаи, в которых различия в свойствах [[Scope]] у двух или более объединённых объектов типа Function незаметны извне, и повторно использовала в таких случаях один и тот же объект Function вместо создания набора объединённых объектов. Такая оптимизация является разрешённой, поскольку данный стандарт описывает лишь внешнее поведение программ на ECMAScript.
13.2 Создание объектов типа Function
Используя опциональный список аргументов, определённый Списком Формальных Аргументов, тело, определённое Телом Функции, и иерархию областей видимости, определённую ОбластьюВидимости, объект типа Function создаётся по следующей схеме:
1. Если уже существует объект E, который был создан предыдущим вызовом алгоритма данного раздела, и этому вызову было передано ТелоФункции, тождественное ТелуФункции, передаваемому сейчас, - переход на шаг 13. (Если существует более одного объекта E, удовлетворяющего этим критериям - конкретная реализация языка может выбрать любой по своему усмотрению.)
2. Создать новый встроенный объект ECMAScript, обозначив его как F.
3. Установить свойство [[Class]] объекта F в "Function".
4. Установить свойство [[Prototype]] объекта F стандартному прототипу объекта Function согласно описанию в разделе 15.3.3.1.
5. Установить свойство [[Call]] объекта F согласно описанию в разделе 13.2.1.
6. Установить свойство [[Construct]] объекта F согласно описанию в разделе13.2.2.
7. Установить свойство [[Scope]] объекта F равным новой иерархии областей видимости (раздел 10.1.4), содержащей те же объекты, что и ОбластьВидимости.
8. Установить свойство length объекта F равным количеству формальных свойств, указанных в СпискеФормальныхАргументов. Если аргументов указано не было, установить свойство length объекта F равным 0. Этому свойству назначаются атрибуты согласно описанию в разделе 15.3.5.1.
9. Создать новый объект, как он был бы создан выражением new Object().
10. Установить свойство constructor объекта Результат(9) равным F. Этому свойству назначаются атрибуты { DontEnum }.
11. Установить свойство prototype объекта F равным Результату(9). Этому свойству назначаются атрибуты согласно описанию в разделе 15.3.5.2.
12. Вернуть F.
13. Реализация по своему усмотрению может перейти либо на шаг 2, либо на шаг 14.
14. Создать новый встроенный объект ECMAScript, объединённый с E, обозначив его как F. Скопировать все не-внутренние свойства и их атрибуты объекта E в объект F, чтобы не-внутренние свойства объектов E и F были идентичны.
15. Установить свойство [[Class]] объекта F в "Function".
16. Установить свойство [[Prototype]] объекта F стандартному прототипу объекта Function согласно описанию в разделе 15.3.3.1.
17. Установить свойство [[Call]] объекта F согласно описанию в разделе 13.2.1.
18. Установить свойство [[Construct]] объекта F согласно описанию в разделе13.2.2.
19. Установить свойство [[Scope]] объекта F равным новой иерархии областей видимости (раздел 10.1.4), содержащей те же объекты, что и ОбластьВидимости.
20. Вернуть F.
ЗАМЕЧАНИЕ Свойство prototype автоматически создаётся для каждой функции с целью обеспечения возможности использования функции в качестве конструктора.
Шаг 1 позволяет реализации оптимизировать типичный случай функции A, имеющей вложенную независимую функцию B. В этом случае реализация может повторно использовать тот же объект для B, вместо того чтобы создавать каждый раз новый экземпляр при вызове A. Шаг 13 делает эту оптимизацию необязательной; реализация, которая предпочтёт не воспользоваться ей, перейдёт на шаг 2.
Например, для кода
function A() {
function B(x) {return x* x;}
return B;
}
function C() {
return eval("(function(x) {return x* x;})");
}
var b1 = A();
var b2 = A();
function b3(x) {return x* x;}
function b4(x) {return x* x;}
var b5 = C();
var b6 = C();
реализация может, но не обязана, объединить b1 и b2. Более того, она может использовать для b1 и b2 один и тот же объект, поскольку нет возможности различить их свойства [[Scope]]. С другой стороны, реализация не должна объединять b3 и b4, поскольку их исходные коды не тождественны (согласно13.1.1). Также реализация не должна объединять b5 и b6, потому что они созданы двумя разными вызовами eval и, таким образом, их исходные коды не тождественны.
На практике скорее всего окажется целесообразным объединять объекты типа Function только в тех случаях, когда реализация может доказать, что различия между их свойствами [[Scope]] не различимы, и в таких случаях можно повторно использовать один объект. Следуя этому принципу, реализация встретит только тривиальный случай объединения объекта с самим собой.
13.2.1 [[Call]]
Когда вызывается свойство [[Call]] объекта F типа Function, предпринимаются следующие шаги:
1. Создать новый контекст исполнения, используя СписокФормальныхАргументовобъекта F, переданный список значений аргументов и значение this согласно описанию в 10.2.3.
2. Вычислить значение ТелаФункции.
3. Выйти из контекста исполнения, созданного в шаге 1, восстановив предыдущий контекст исполнения.
4. Если Результат(2). тип равен throw - бросить Результат(2). значение.
5. Если Результат(2). тип равен return - вернуть Результат(2). значение.
6. (Результат(2). тип в данной точке должен равняться normal.) Вернутьundefined.
13.2.2 [[Construct]]
Когда вызывается свойство [[Construct]] объекта F типа Function, предпринимаются следующие шаги:
1. Создать новый встроенный объект ECMAScript.
2. Установить свойство [[Class]] объекта Результат(1) в "Object".
3. Получить значение свойства prototype объекта F.
4. Если Результат(3) является объектом, установить свойство [[Prototype]]Результата(1) равным Результату(3).
5. Если Результат(3) не является объектом, установить свойство [[Prototype]]Результата(1) равным стандартному прототипу объекта Object согласно описанию в разделе 15.2.3.1.
6. Вызвать свойство [[Call]] объекта F, указав Результат(1) в качестве значенияthis и передав список аргументов, переданный вызову [[Construct]], в качестве значений аргументов.
7. Если Тип(Результата(6)) - Object, вернуть Результат(6).
8. Вернуть Результат(1).
Методы формирования и внедрения корпоративной культуры в деятельность компании (отечественный и зарубежный опыт) Миссию, ценности и правила корпоративной культуры нетрудно написать и оформить в качестве «Делового кодекса», но реализация, проявление и «живое» существование корпоративных установок зависят от успешного решения непростой проблемы организации специальных мероприятий по их внедрению [2, С. 63]. Опыт и наблюдение за деятельностью многих российских компаний показывают, что именно практический аспект существования корпоративной культуры является самым важным и самым трудоемким. Японский исследователь Т. Коно так описывает решение проблемы практического внедрения норм и правил корпоративной культуры на японских предприятиях: «Кредо компании повторяется повсеместно. Оно излагается и подробно объясняется в брошюре, которая знакомит нового работника с компанией, ее историей, продукцией, организационной структурой и политикой каждого подразделения. Всесторонне познакомив с компанией, от сотрудников ждут, что они станут вести себя наилучшим образом для достижения цели компании, будут выполнять свои обязанности по собственной инициативе, даже если нет подробной должностной инструкции [4, С. 76]. На то, чтобы дать новым работникам техническую квалификацию, вдохновить их философией, целями и политикой компании, тратится около восьми месяцев. Каждое утро проводится утреннее собрание в каждом подразделении, исполняется гимн компании и хором зачитываются «Семь духов», затем кто-то из служащих излагает перед собравшимися свое мнение о работе. Текст основных правил вывешен на стене, и лозунг текущего года поднят высоко для всеобщего обозрения. На Новый год ведущие менеджеры собираются вместе, и председатель совета директоров вместе с президентом компании объявляет им базовую политику на предстоящий год. Разрабатывается долгосрочный план, и информация о новых направлениях стратегии компании через журнал компании сообщается всем работникам» [3, С. 163]. В качестве примера в этом небольшом отрывке перечислены следующие методы внедрения корпоративной культуры, которые, кстати, используются не только в Японии, но и в Европе и США (кроме, пожалуй, пения корпоративных гимнов): содержанием введения в должность вновь принимаемых сотрудников выступает не только их профессиональное обучение, но и использование корпоративных лозунгов и целей для вдохновления на работу; целевое использование средств корпоративной прессы (изложение корпоративных ценностей и правил в брошюрах); вывешивание текстов, в которых перечислены корпоративные лозунги, ценности и правила, на стендах компании; регулярные выступления руководства с формулировками корпоративных ценностей, целей и правил; «накачка» персонала каждое утро перед работой – пение гимнов, выступление ведущих сотрудников с формулировками целей работы; регулярное повторение ценностей, целей и принципов корпоративной культуры для их глубокого усвоения работниками. В России тоже есть эффективный метод разработки и практического внедрения корпоративной культуры в компании, созданный и апробированный отечественными игротехниками. В 80-х – начале 90-х гг. этот метод называлсяорганизационно - деятелъностной игрой (ОДИ) и применялся для решения нестандартных народнохозяйственных проблем, разработки крупных государственных проектов, перестройки системы управления предприятий и организаций [18, С. 67]. В последние годы в процессе применения этого метода с целью создания и внедрения корпоративной культуры в компании его можно назвать корпоративным тренингом.
