diff options
Diffstat (limited to 'files/uk/web/javascript/reference/global_objects/function/call')
| -rw-r--r-- | files/uk/web/javascript/reference/global_objects/function/call/index.html | 168 |
1 files changed, 0 insertions, 168 deletions
diff --git a/files/uk/web/javascript/reference/global_objects/function/call/index.html b/files/uk/web/javascript/reference/global_objects/function/call/index.html deleted file mode 100644 index caa12e71b0..0000000000 --- a/files/uk/web/javascript/reference/global_objects/function/call/index.html +++ /dev/null @@ -1,168 +0,0 @@ ---- -title: Function.prototype.call() -slug: Web/JavaScript/Reference/Global_Objects/Function/call -tags: - - Function - - JavaScript - - Method -translation_of: Web/JavaScript/Reference/Global_Objects/Function/call ---- -<div>{{JSRef}}</div> - -<p>Метод <code><strong>call()</strong></code> викликає функцію із вказаним значенням <code>this</code> та зазначеним переліком аргументів.</p> - -<div class="note"> -<p><strong>Заувага:</strong> Хоча за своїм призначенням цей метод і {{jsxref("Function.prototype.apply", "apply()")}} є тотожними, аргументи для викликаної функції передаються в дещо різний спосіб: метод <code>call()</code> приймає їх <strong>перелік</strong>, тоді як метод <code>apply()</code> приймає їх <strong>масив</strong>.</p> -</div> - -<div>{{EmbedInteractiveExample("pages/js/function-call.html")}}</div> - -<p class="hidden">Першокод цього прикладу збережено у репозиторії GitHub. Якщо ви хочете долучитися до створення чи поліпшення таких прикладів, пропонуйте нам свої зміни до репозиторію <a href="https://github.com/mdn/interactive-examples">https://github.com/mdn/interactive-examples</a>.</p> - -<h2 id="Синтаксис">Синтаксис</h2> - -<pre class="syntaxbox"><code><var>function</var>.call(<var>thisArg</var>[, <var>arg1</var>[, <var>arg2</var>[, ...]]])</code></pre> - -<h3 id="Параметри">Параметри</h3> - -<dl> - <dt><code>thisArg</code> {{optional_inline}}</dt> - <dd>Значення <code>this</code>, яке буде застосовано для виклику <code>function</code>. Зауважте, що значення <code>thisArg</code> може зазнати перетворень — якщо функція <code>function</code> виконується у {{jsxref("Functions_and_function_scope/Strict_mode", "поблажливому режимі", "", 1)}}, тоді замість {{jsxref("Global_Objects/null", "null")}} та {{jsxref("Global_Objects/undefined", "undefined")}} буде застосовано {{glossary("Global_object", "глобальний об'єкт")}}, а {{glossary("Primitive", "прості величини")}} буде обернено на об'єкти.</dd> - <dt><code>arg1, arg2, ...</code> {{optional_inline}}</dt> - <dd>Аргументи, що їх буде передано до функції <code>function</code>.</dd> -</dl> - -<h3 id="Вертає">Вертає</h3> - -<p>Значення, яке внаслідок виклику повернула сама функція <code>function</code>.</p> - -<h2 id="Опис">Опис</h2> - -<p>Метод <code>call()</code> здійснює виклик функції, заступаючи значення ключового слова <code>this</code> всередині неї значенням, переданим до <code>call()</code> як перший аргумент. Це уможливлює одноразове написання деякої функції з можливістю її надалі викликати для всякого об'єкта так, наче вона є його методом.</p> - -<h2 id="Приклади">Приклади</h2> - -<h3 id="Виклик_успадкованих_конструкторів_за_допомогою_call">Виклик успадкованих конструкторів за допомогою <code>call</code></h3> - -<p>Методом <code>call()</code> можна скористатись для створення ланцюжка конструкторів об'єкта, як у Java. У наведеному прикладі конструктор <code>Product</code> (виріб) має два параметри: назву (<code>name</code>) й ціну (<code>price</code>). Два інші конструктори — <code>Food</code> (їжа) і <code>Toy</code> (цяцька) — спершу викликають конструктор <code>Product</code>, передаючи потрібні йому значення <code>name</code> і <code>price</code>, а відтак додають окрему властивість <code>category</code> (різновид).</p> - -<pre class="brush: js">function Product(name, price) { - this.name = name; - this.price = price; -} - -function Food(name, price) { - Product.call(this, name, price); - this.category = 'food'; -} - -function Toy(name, price) { - Product.call(this, name, price); - this.category = 'toy'; -} - -var cheese = new Food('feta', 5); -var fun = new Toy('robot', 40); -</pre> - -<h3 id="Виклик_неназваних_функцій_за_допомогою_метода_call">Виклик неназваних функцій за допомогою метода <code>call</code></h3> - -<p>Цей суто надуманий приклад містить використання метода <code>call</code> для виклику анонімної функції на кожному об'єкті з масиву.</p> - -<p>Всередині цієї анонімної функції кожен об'єкт отримує окремий метод <code>print</code>, що друкуватиме значення властивостей об'єкта та його розташунок (індекс) в масиві. Передача об'єкта саме як <code>this</code> не є необхідністю, а вжито лише задля наочності.</p> - -<pre class="brush: js">var animals = [ - { species: 'Лев', name: 'Король' }, - { species: 'Пантера', name: 'Багіра' } -]; - -for (var i = 0; i < animals.length; i++) { - (function(i) { - this.print = function() { - console.log(i, this.species, this.name); - } - this.print(); - }).call(animals[i], i); -} -</pre> - -<h3 id="Виклик_функції_та_перевиознака_this_за_допомогою_метода_call">Виклик функції та перевиознака <code>this</code> за допомогою метода <code>call</code></h3> - -<p>Під час виклику функції <code>greet</code> в цьому прикладі значення <code>this</code> буде прив'язано до об'єкта <code>obj</code>:</p> - -<pre class="brush: js">function greet() { - var message = 'Вітаємо, ' + (this.isMale ? 'пане ' : 'пані ') + this.name; - console.log(message); -} - -var obj = { - isMale: false, name: 'Олено' -}; - -greet.call(obj); // Вітаємо, пані Олено -</pre> - -<h3 id="Виклик_функції_за_допомогою_метода_call_без_зазначення_першого_аргумента">Виклик функції за допомогою метода <code>call</code> без зазначення першого аргумента</h3> - -<p>Як засвідчує цей приклад, відсутність першого аргумента метода <code>call</code> має наслідком прив'язування <code>this</code> до {{glossary('global object', 'глобального об\'єкта')}}:</p> - -<pre class="brush: js">var name = 'Тарас'; - -var x = { - name: 'Микола', - display: function() { - console.log('Мене звуть ' + this.name); - } -}; - -x.display(); // Мене звуть Микола -x.display.call(); // Мене звуть Тарас -</pre> - -<h2 id="Специфікації">Специфікації</h2> - -<table class="standard-table"> - <tbody> - <tr> - <th scope="col">Специфікація</th> - <th scope="col">Статус</th> - <th scope="col">Коментар</th> - </tr> - <tr> - <td>{{SpecName('ES1')}}</td> - <td>{{Spec2('ES1')}}</td> - <td>Початкова виознака. Запроваджено у JavaScript 1.3.</td> - </tr> - <tr> - <td>{{SpecName('ES5.1', '#sec-15.3.4.4', 'Function.prototype.call')}}</td> - <td>{{Spec2('ES5.1')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ES6', '#sec-function.prototype.call', 'Function.prototype.call')}}</td> - <td>{{Spec2('ES6')}}</td> - <td></td> - </tr> - <tr> - <td>{{SpecName('ESDraft', '#sec-function.prototype.call', 'Function.prototype.call')}}</td> - <td>{{Spec2('ESDraft')}}</td> - <td></td> - </tr> - </tbody> -</table> - -<h2 id="Підтримка_веб-переглядачами">Підтримка веб-переглядачами</h2> - -<div class="hidden">Таблиця сумісності на цій сторінці створена зі структурованих даних. Якщо ви хочете долучитися до розробки цих даних, пропонуйте нам свої pull request до репозиторію <a href="https://github.com/mdn/browser-compat-data">https://github.com/mdn/browser-compat-data</a>.</div> - -<div>{{Compat("javascript.builtins.Function.call")}}</div> - -<h2 id="Див._також">Див. також</h2> - -<ul> - <li>{{jsxref("Function.prototype.bind()")}}</li> - <li>{{jsxref("Function.prototype.apply()")}}</li> - <li> - <p><a href="/uk/docs/Learn/JavaScript/Objects">Вступ до об'єктів JavaScript</a></p> - </li> -</ul> |
