Вы определили значение свойства «говорить» как функцию стрелки, что означает, что значение this
в этой функции будет независимо от значения this
в контексте определения функции. Это не объект «собака», это то, что this
- это то, что отображается let
.
Если вы используете обычную функцию вместо этого, ваш код будет работать, как вы ожидаете:
let dog = {
s:'Woff',
talk: function(){ console.log(this.s); }
};
console.log(dog.talk());
Теперь на вершине this
проблемы, ваша функция «говорить» ничего не вернуть, так прохождения результаты вызова функции всегда будут возвращаться undefined
. (В версии функции со стрелкой был, возможно, это было возвращаемое значение, если бы это было тело без функции без брекета, но оно было бы также было undefined
, потому чтоничего не возвращает.) Итак:
let dog = {
s:'Woff',
talk: function(){ console.log(this.s); return this.s; }
};
console.log(dog.talk());
Теперь вы увидите «Woff» из console.log()
в функции, а также от внешнего console.log()
.
console.log возвращает undefined. –
1. У вас нет каких-либо операторов 'return' и 2. you' console.log (console.log (...)) ' – crashmstr
@JaredSmith Только что проверили документы, а так как он имеет' {} ' (тело блока) ему нужно вернуть, насколько я могу судить: [Функции стрелки] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions) – crashmstr