JavaScript

Помогите с вопросом про JavaScript Object

хочу исползовать тоже самое пропэрти name на fullname чтоб получить John Johnson но дает undefined Johnson
let data={
name : "John",
fullname : this.name+" Johnson"
};
console.log(data.fullname);
//undefined Johnson
class Person {
constructor(name, surname) {
this.name = name;
this.surname = surname;
}
get fullname() {
return this.name + ' ' + this.surname;
}
}

let johnson = new Person("John", "Johnson");
console.log(johnson.fullname);
Виталий Балан
Виталий Балан
99 726
Лучший ответ
var data={
name : "John",
secondName : " Johnson",
fullname : function() {
console.log(this.name + this.secondName ) }
};
data.fullname();
_____
Или если хотели по написанному вами приниципу
var data={
name : "John",
fullname : function() {
console.log(this.name + "Johnson" ) }
};
data.fullname();
_______________________
А ответчик выше - большой любитель пудрить мозги начинающим своими заумностями))
Алекс Беляк
Алекс Беляк
78 141
Алекс Беляк Либо так
______
var data = {
name : "John",
secondName : "Johnson",
fullname : function() {
return this.name + this.secondName;
}
};
console.log(data.fullname());
Максим Сасин Ну заумник мне не надо так мне надо вэлю взять а если зделать return и потом этот fullname дать другому то оно получаеть функцию а не вэлю который ты сделал console.log()
Вот так

data={
name : "John",
get fullname(){return this.name+" Johnson"}
};

console.warn(data.fullname);//"John Johnson"

Илья Крапчатов
Илья Крапчатов
58 922
Надо создать свойство. Читай тут https://learn.javascript.ru/descriptors-getters-setters
"Указание get/set в литералах"
(() => {
function addMethod( object, name, fn ) {
var old = object[ name ];
object[ name ] = function() {
if( fn.length == arguments.length ) {
return fn.apply( this, arguments );
}
else if( typeof old == 'function' ) {
return old.apply( this, arguments );
}
}
}

var name = {};

addMethod( name, 'whatever', function() {});
addMethod( name, 'whatever', function( a ) {});
addMethod( name, 'whatever', function( a, b ) {});

var names = {
values: [ 'John Johnson', 'Ivan Drago' ]
}

addMethod( names, 'find', function() {
return this.values;
});

addMethod( names, 'find', function( name ) {
var ret = [];
for( var i = 0; i < this.values.length; i++ ) {
if( this.values[ i ].indexOf( name ) == 0 ) {
ret.push( this.values[ i ] );
}
}
return ret;
});

addMethod( names, 'find', function( first, last ) {
var ret = [];
for( var i = 0; i < this.values.length; i++ ) {
if( this.values[ i ] == ( first + ' ' + last ) ) {
ret.push( this.values[ i ] );
}
}
return ret;
});

alert( names.find()); // Все найденные имена
alert( names.find( 'John' )); // По имени
alert( names.find( 'John', 'Johnson' )); // По полному имени
})();

Код тут: https://jsfiddle.net/3dksnqjw/19/
Ismayil Abdulov
Ismayil Abdulov
3 819