Object对象定义为构造函数。但是,我可以在其上调用诸如Object.create(),Object.freeze(),Object.assign()等的方法。我也可以通过键入“ var foo = new Object()”来创建一个新对象。 “。
因此,如果Object是构造函数,那么我如何直接在其上调用方法?
那总是让我感到困惑。
答案 0 :(得分:4)
构造函数本身也可以具有属性。在现代语法中,这些称为静态方法。例如:
class Foo {
static fooRelatedFn() {
console.log('foo related function running');
}
constructor() {
this.bar = 'bar';
}
}
Foo.fooRelatedFn();
const foo = new Foo();
console.log(foo.bar);
使用常规语法,只需分配给构造函数的一个属性即可完成同一件事:
function Foo() {
this.bar = 'bar';
}
Foo.fooRelatedFn = function() {
console.log('foo related function running');
}
Foo.fooRelatedFn();
const foo = new Foo();
console.log(foo.bar);