如果我跑
"string".toUpperCase();
代码应返回
STRING
这是如何工作的,据我所知,函数只能这样调用;
myFunction("args");
我如何创建一个与.toUpperCase()
答案 0 :(得分:1)
您可以直接在对象上存储函数。
let foo = {
bar() {
}
};
foo.bar()
或者你可以间接地在对象的原型上存储一个。
String.prototype.bar = function() {
return "my " + this;
}
let foo = "string";
foo.bar(); // "my string"
将方法添加到现有原型(猴子修补)通常被认为是一个坏主意,但在实现原型继承时经常使用定义带有方法的新原型。
function Vehicle() {
this.fuel = 100;
}
Vehicle.prototype.drive = () => {
this.fuel -= 1;
}
let car = new Vehicle();
let train = new Vehicle();
car.drive();
train.drive();
答案 1 :(得分:0)
这是您的解决方案;
String.prototype.myfunction = function () {
return this.toUpperCase();
}
>>> "hello".myfunction()
"HELLO"
答案 2 :(得分:0)
这是reference。
格式类似于Class.method()
。
在您的示例"string".toUpperCase();
上,“字符串”由String
类:)包装,因为它是 primitive 。
.method()
就是他们有时称之为功能。
实际上,在浏览器上,当您定义类似的内容时:
function happy(){
console.log("learning");
}
并且您将其称为happy()
,它等同于window.happy()
。在您的Web控制台上尝试验证。
以下是上述参考文献的例子。
class Rectangle {
constructor(height, width) {
this.height = height;
this.width = width;
}
get area() {
return this.calcArea();
}
calcArea() {
return this.height * this.width;
}
}
const square = new Rectangle(10, 10);
console.log(square.area);