Baseline Widely available
СводкаÐеÑод call()
вÑзÑÐ²Ð°ÐµÑ ÑÑнкÑÐ¸Ñ Ñ ÑказаннÑм знаÑением this
и индивидÑалÑно пÑедоÑÑавленнÑми аÑгÑменÑами.
ÐÑимеÑание: ХоÑÑ ÑинÑакÑÐ¸Ñ ÑÑой ÑÑнкÑии пÑакÑиÑеÑки полноÑÑÑÑ Ð¸Ð´ÐµÐ½ÑиÑен ÑÑнкÑии apply()
, ÑÑндаменÑалÑное ÑазлиÑие Ð¼ÐµÐ¶Ð´Ñ Ð½Ð¸Ð¼Ð¸ заклÑÑаеÑÑÑ Ð² Ñом, ÑÑо ÑÑнкÑÐ¸Ñ call()
пÑÐ¸Ð½Ð¸Ð¼Ð°ÐµÑ ÑпиÑок аÑгÑменÑов, в Ñо вÑемÑ, как ÑÑнкÑÐ¸Ñ apply()
- одиноÑнÑй маÑÑив аÑгÑменÑов.
fun.call(thisArg[, arg1[, arg2[, ...]]])ÐаÑамеÑÑÑ
thisArg
ÐнаÑение this
, пÑедоÑÑавлÑемое Ð´Ð»Ñ Ð²Ñзова ÑÑнкÑии fun
. ÐбÑаÑиÑе внимание, ÑÑо this
Ð¼Ð¾Ð¶ÐµÑ Ð½Ðµ бÑÑÑ ÑеалÑнÑм знаÑением, видимÑм ÑÑим меÑодом: еÑли меÑод ÑвлÑеÑÑÑ ÑÑнкÑией в неÑÑÑогом Ñежиме, знаÑÐµÐ½Ð¸Ñ null
и undefined
бÑдÑÑ Ð·Ð°Ð¼ÐµÐ½ÐµÐ½Ñ Ð³Ð»Ð¾Ð±Ð°Ð»ÑнÑм обÑекÑом, а пÑимиÑивнÑе знаÑÐµÐ½Ð¸Ñ Ð±ÑдÑÑ ÑÐ¿Ð°ÐºÐ¾Ð²Ð°Ð½Ñ Ð² обÑекÑÑ.
arg1, arg2, ...
ÐÑгÑменÑÑ Ð´Ð»Ñ Ð¾Ð±ÑекÑа.
ÐÑ Ð¼Ð¾Ð¶ÐµÑе пÑиÑваиваÑÑ ÑазлиÑнÑе обÑекÑÑ this
пÑи вÑзове ÑÑÑеÑÑвÑÑÑей ÑÑнкÑии. this
ÑÑÑлаеÑÑÑ Ð½Ð° ÑекÑÑий обÑекÑ, вÑзвавÑий обÑекÑ. С помоÑÑÑ call
Ð²Ñ Ð¼Ð¾Ð¶ÐµÑе напиÑаÑÑ Ð¼ÐµÑод один Ñаз, а заÑем наÑледоваÑÑ ÐµÐ³Ð¾ в дÑÑгиÑ
обÑекÑаÑ
, без необÑ
одимоÑÑи пеÑепиÑÑваÑÑ Ð¼ÐµÑод Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ нового обÑекÑа.
call
Ð´Ð»Ñ ÑвÑзи конÑÑÑÑкÑоÑов обÑекÑа в ÑепоÑкÑ
ÐÑ Ð¼Ð¾Ð¶ÐµÑе иÑполÑзоваÑÑ Ð¼ÐµÑод call
Ð´Ð»Ñ Ð¾Ð±ÑÐµÐ´Ð¸Ð½ÐµÐ½Ð¸Ñ Ð² ÑепоÑÐºÑ ÐºÐ¾Ð½ÑÑÑÑкÑоÑов обÑекÑа, как в Java. Ð ÑледÑÑÑем пÑимеÑе Ð´Ð»Ñ Ð¾Ð±ÑекÑа пÑодÑкÑа Product
обÑÑвлен конÑÑÑÑкÑÐ¾Ñ Ñ Ð´Ð²ÑÐ¼Ñ Ð¿Ð°ÑамеÑÑами, названием name
и Ñеной price
. ÐÑодÑÐºÑ Ð¸Ð½Ð¸ÑиализиÑÑÐµÑ ÑвойÑÑва name
и price
, а ÑпеÑиализиÑованнÑе ÑÑнкÑии опÑеделÑÑÑ ÐµÑÑ ÐºÐ°ÑегоÑÐ¸Ñ category
.
function Product(name, price) {
this.name = name;
this.price = price;
if (price < 0) {
throw RangeError(
"ÐелÑÐ·Ñ ÑоздаÑÑ Ð¿ÑодÑÐºÑ " + this.name + " Ñ Ð¾ÑÑиÑаÑелÑной Ñеной",
);
}
}
function Food(name, price) {
Product.call(this, name, price);
this.category = "еда";
}
Food.prototype = Object.create(Product.prototype);
function Toy(name, price) {
Product.call(this, name, price);
this.category = "игÑÑÑка";
}
Toy.prototype = Object.create(Product.prototype);
var cheese = new Food("ÑеÑа", 5);
var fun = new Toy("ÑобоÑ", 40);
ÐÑимеÑ: иÑполÑзование call
Ð´Ð»Ñ Ð²Ñзова анонимной ÑÑнкÑии
Ð ÑÑом ÑиÑÑо иÑкÑÑÑÑвенном пÑимеÑе, Ð¼Ñ ÑоздаÑм анонимнÑÑ ÑÑнкÑÐ¸Ñ Ð¸ иÑполÑзÑем call
Ð´Ð»Ñ Ð²Ñзова ÐµÑ Ð½Ð° каждом ÑлеменÑе маÑÑива. ÐÐ»Ð°Ð²Ð½Ð°Ñ Ð·Ð°Ð´Ð°Ñа анонимной ÑÑнкÑии здеÑÑ â добавиÑÑ ÑÑнкÑÐ¸Ñ Ð¿ÐµÑаÑи в каждÑй обÑекÑ, ÑпоÑобнÑÑ Ð½Ð°Ð¿ÐµÑаÑаÑÑ Ð¿ÑавилÑнÑй Ð¸Ð½Ð´ÐµÐºÑ Ð¾Ð±ÑекÑа в маÑÑиве. ÐеÑедаÑа обÑекÑа в каÑеÑÑве знаÑÐµÐ½Ð¸Ñ this
не ÑвлÑеÑÑÑ Ð¾ÑÑÑой необÑ
одимоÑÑÑÑ, но Ð¼Ñ Ð´ÐµÐ»Ð°ÐµÐ¼ ÑÑо в ÑелÑÑ
обÑÑÑнениÑ.
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);
}
СпеÑиÑикаÑии СовмеÑÑимоÑÑÑ Ñ Ð±ÑаÑзеÑами СмоÑÑиÑе Ñакже
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4