Tho*_*ggi 12 javascript class ecmascript-6
有没有什么方法可以让我把一个类称为函数.我正在寻找下面的功能,其中有一个main类中的方法,这是我想让方法执行的方法.
class test {
constructor () {
return this.main
}
main () {
return Promise.resolve('thomas')
}
}
test().then(name => {
console.log(name)
})
Run Code Online (Sandbox Code Playgroud)
看来我唯一的另一个选择是拥有这样的包装函数.
class Test {
constructor (name) {
this.name = name
}
main () {
return Promise.resolve(this.name)
}
}
let test = (name) => {
return new Test(name).main()
}
test('thomas').then(name => {
console.log(name)
})
Run Code Online (Sandbox Code Playgroud)
小智 2
我知道我迟到了好几年,但我找到的解决方案是这样的:
// MyLib.js
class MyLib {
constructor(selector){}
someMethod(){}
...
}
export function MyFunction(selector){
return new MyLib(selector)
}
Run Code Online (Sandbox Code Playgroud)
那么我不需要使用new,我可以简单地做MyFunction().someMethod()
例如,我使用 vanilla js 编写了一个简单的 jQuery 替换,并且我实际上替换了大约 90% 以上的 jQuery 语法,只需更改$为J:
J().ready(function(){})
J().ajax(...).then((res)=>{}).catch((err)=>{}) // used axios here
J('.someClass').find('li').last()
J('header').css({display:'block'})
//etc
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我发现使用 webpack 全局公开它更具挑战性......但我对 webpack (样板之外)有点陌生 - 所以是的。
希望这对某人有帮助。