Итак, используя Академию Кодекса, я нахожусь в разделе «Объекты» учебника Javascript, и мне очень тяжело обворачивать мой мозг. Функции & Объекты. Мне нужна помощь и объяснение с помощью приведенных ниже частей кода. Я прокомментировал каждую строку, в чем мне нужна помощь. Большое спасибо заранее.Справка по Javascript: Функции/Объекты
// Obviously declaring the Rabbit function with adjective to be called
function Rabbit(adjective) {
// I don't understand this line, or the context of why this is being used.
this.adjective = adjective;
// Why declare another function here? Is a function within a function
// considered a Method or is that only Function within an Object?
this.describeMyself = function() {
// I get this part but why does it need a function to do this?
console.log("I am a " + this.adjective + " rabbit");
};
}
// I don't get this either, Isn't this declaring a new object? How can
// that be when you only have a Function named Rabbit?
var rabbit1 = new Rabbit("fluffy");
var rabbit2 = new Rabbit("happy");
var rabbit3 = new Rabbit("sleepy");
// How could this work if describeMyself is in the Rabbit function and
// has nothing to do with rabit1?
console.log(rabbit1.describeMyself);
console.log(rabbit2.describeMyself);
console.log(rabbit3.describeMyself);
Надеюсь, не слишком запутанным, но если кто из вас более опытные люди Javascript любезно объяснить все, о которой я говорил в комментариях я очень ценю это. Благодаря
«Метод» в языках программирования обычно является функцией, прикрепленной как свойство или дочерний элемент объекта (но спецификация EMCAScript, которая определяет JavaScript, никогда не использует слово «метод» для описания какой-либо особенности языка, а просто общая слово). В целом, на это обычно отвечает [JavaScript: как работает «новый» внутри) (https://stackoverflow.com/questions/6750880/javascript-how-does-new-work-internally), хотя ответы там могут возьмите на себя сильную команду языка. Короткий ответ 'new' вызывает функцию с вновь созданным объектом' this'. – apsillers
Обратите внимание, что ваш курс учит методу, который все еще работает, но который, как правило, [считается замененным] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes) последним версия Javascript. Но если у вас есть опыт работы с любым современным языком ООП (C++, Ruby, Java), должно быть достаточно легко найти параллели с их представлениями о классах, методах и т. Д. Но следует предупредить, что основной механизм (прототипное делегирование) существенно отличается , –
Чтобы исправить мой предыдущий комментарий: spec действительно * does * явно определяет «метод» как «функцию, которая является значением свойства». (Я ошибочно считал, что это не дает такого определения для этой категории функций.) – apsillers