Я пытаюсь изучить javascript, и я нашел следующий код: Я не понимаю, как эти возвращенные функции могут быть вызваны так, как они явно определены на объекте (I.e mycat.makeOlder()). может кто-нибудь объяснить? btw Я знаю oop java/C#.вызов функции, возвращаемой javascript, как обычный определенный метод?
function CatMaker(name) {
var age = 10;
//construct an object on the fly with three methods.
//All methods have access to age, but age cannot be
//directly accessed outside of this function.
return {
"sayHello": function() { //first method
alert("Miaow");
},
"getAge": function (inCatYears) { //second method
if (inCatYears) {
return age * 7;
}
else {
return age;
}
},
"makeOlder": function() { //third method
age++;
}
};
}
var mycat = CatMaker('Snuffles');
alert(mycat.getAge(true)); //returns 70
alert(mycat.makeOlder());
alert(mycat.getAge(true)); //returns 77
Это не ** ** функции, которые ** методы ** из простого объекта, который возвращается ' CatMaker', поэтому у вас есть доступ к этим методам с помощью переменной 'mycat' – hindmost
Не можете ли вы вызвать методы, подобные в примере? Функция CatMaker возвращает объект, указанный в скобках '{}'. Этот объект имеет определенные методы, и к ним можно получить доступ с помощью точечной нотации. Поэтому 'mycat.makeOlder' ссылается на функцию, которая может быть вызвана, например. – jswetzen
В javascript вы не определяете методы (функции в свойствах) в классах, вы помещаете их в объекты. – Bergi