我可以使用JavaScript做到这一点:
var output = String(result);
我可以对使用String
引用的同一对象执行此操作:
var character = String.fromCharCode(10);
String
可以用作构造对象的函数, 可以在其上调用成员,而无需将其用作构造函数。如何使对象在这两种方式下都可用?这叫什么?
答案 0 :(得分:1)
您正在谈论类方法。
function Foo() {
this.bar = 3
}
Foo.baz = function() {
console.log('hi');
}
或在ES 2015中
class Foo {
static baz () {
console.log('hi');
}
}
您可以在构造函数中定义静态方法,因为构造函数必须在范围内:
function Foo() {
Foo.method = function () {
// do stuff
}
}
这种方法有两个问题:
Foo.method('stringy string'); // TypeError: cannot read property 'method' of undefined
由于静态方法是在构造函数中定义的,因此直到构造函数至少运行一次之后,该方法才会存在:
const foo = new Foo();
Foo.method('stringy string'); // now we're good
导致另一个问题,现在每次构造函数运行时,我们都在浪费精力重新分配该方法。您可以通过条件检查来避免这种情况:
function Foo() {
if (!Foo.method) Foo.method = function....
}
但这只是很多奇怪的事情,只是为了避免在构造函数之后定义类方法,而且仍然不能解决第一个问题。
答案 1 :(得分:0)
您可以使用静态方法创建类:
class Foo {
constructor(bar) {
this.bar = bar;
}
length() {
return this.bar.length;
}
static fromThing(thing) {
return new Foo(thing.bar);
}
}
Foo.fromThing()类似于String.fromCharCode()
答案 2 :(得分:0)
简单
function MyClass () {
this.val = 1;
}
MyClass.staticMethod = function () {/* code here */};