Есть ли более краткий способ выразить это, чем три различных процедурных операции? Что-то более похожее на объект, или, по крайней мере, все внутри тела функции Name
?Наследование прототипа JavaScript: сжатый синтаксис?
Проблема:
function Name(first, last) {
this.first = first;
this.last = last;
}
Name.prototype = new String;
Name.prototype.toString = function() {
return this.last + ', ' + this.first;
};
Тест:
console.log(new Name("jimmy", "dean").toString())
console.log(new Name() instanceof Name);
console.log(new Name() instanceof String);
console.log(new Name() instanceof Object);
console.log(Name.prototype.toString.call(new Name('jimmy', 'dean')));
console.log(Name.prototype.toString.call({
first: 'jimmy',
last: 'dean'
}));
Ожидаемый результат:
< "dean, jimmy"
< true
< true
< true
< "dean, jimmy"
< "dean, jimmy"
Nitpicking; вы имеете в виду 'partFirst' вместо этого? – pimvdb
@ pimvdb - иногда лучше просто отредактировать вопрос для небольших опечаток. – RobG
Я не понимаю, почему вы хотите, чтобы прототип был экземпляром String. Пока * toString * возвращает строку (что кажется разумным), вы можете вызывать любой метод, который будет наследоваться от String без назначения строки прототипу конструктора. – RobG