gpt4 book ai didi

javascript - 当构造函数作为对象调用时,如何使构造函数具有可访问的成员

转载 作者:行者123 更新时间:2023-11-30 20:03:24 26 4
gpt4 key购买 nike

我可以用 JavaScript 做到这一点:

var output = String(result);

我可以用 String 引用的同一个对象来做到这一点:

var character = String.fromCharCode(10);

String 可用作构造对象的函数并且 成员可在其上调用而无需将其用作构造函数。如何使对象以这两种方式可用?这个叫什么?

最佳答案

你在谈论类方法。

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....
}

但这只是为了避免在构造函数之后定义类方法而做的很多奇怪的事情,它仍然没有解决第一个问题。

关于javascript - 当构造函数作为对象调用时,如何使构造函数具有可访问的成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53147366/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com