预期:当使用 createGreetable
创建变量时,它应该具有由 greetable(text)
设置的附加属性 greet
。通常的 string
方法应该仍然可以在此变量上调用。
我尝试过的:
const greetablePrototype = {
greetable: function(greeting) {
this.greet = `${greeting}, ${ this.valueOf() }!`
}
}
function createGreetable(str) {
const result = new String(str);
Object.setPrototypeOf(result, greetablePrototype)
return result;
}
const t = new createGreetable("world");
t.greetable("hello");
console.log(t.greet);
console.log(t.length);
输出:
hello, [object String]!
5
预期输出:
hello, world!
5
最佳答案
您可以扩展字符串类:
class Greetable extends String {
greet (greeting) {
return `${greeting}, ${this}!`;
}
}
const g = new Greetable('world');
g.greet('hello'); // hello, world!
g.length // 5
关于javascript - 将方法添加到字符串变量的原型(prototype),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69473535/