JavaScript   发布时间:2022-04-16  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了javascript – 使用ES6静态函数时,我得到“没有这样的方法”大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试创建一个带有静态函数的“utils”类,用于我在本机中工作的项目.

我读到了如何在StackOverFlow question中创建静态函数,但由于某些奇怪的原因,它对我不起作用.

//utils.js
'use Strict'

export default {
  textFormat(args) {
      var s = args[0];
      for (var i = 0; i < args.length - 1; i++) {
          var reg = new RegExp("\\{" + i + "\\}","gm");
          s = s.replace(reg,args[i + 1]);
      }
      return s;
  }
}


//main file
import * as Utils from './utils/utils';
/**
/...
**/
var text = Utils.textFormat(rowData.text,"<Text style={{Color:'blue'}}>Hey there</Text>");

但我一直得到这个错误’Utils.textFormat不是一个函数’,我做错了什么?

解决方法

让事情有效的好事,但我只是想添加一个更接近你原本想做的解决方案,并注意 the SO question you linked中的观点.

没有必要使用类来导出一堆静态方法.我不知道它将如何为代码添加功能,易用性或清晰度.实际上相反,语法看起来比导出简单的旧ES5样式对象更加冗长,当我们将ES6的甜味带入混合时更是如此.

您的utils模块的原始示例工作得很好.问题在于导入.

由于您只是导出一个默认对象,因此导入它的正确方法是

import Utils from './utils/utils';

没有括号,没有星号,只是导入的默认对象的名称,然后可以像var text = Utils.textFormat(…)一样使用.

不过,我们可以走得更远.通过抛弃整个“导出一个默认对象”的方法,我们可以使用模块系统的全部功能.

utils.js:

'use Strict'

function textFormat(args) {
      var s = args[0];
      ...
      return s;
}

const someOtherUtility = str => str + ' works!';

export { textFormat,someOtherUtility };

现在可以像这样使用导出的函数

import * as Utils from './utils/utils';

var text = Utils.textFormat(rowData.text,"<Text style={{Color:'blue'}}>Hey there</Text>");

或者像这样

import {textFormat} from './utils/utils';

var text = textFormat(rowData.text,"<Text style={{Color:'blue'}}>Hey there</Text>");

无论你喜欢什么.

大佬总结

以上是大佬教程为你收集整理的javascript – 使用ES6静态函数时,我得到“没有这样的方法”全部内容,希望文章能够帮你解决javascript – 使用ES6静态函数时,我得到“没有这样的方法”所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。