【问题标题】:Export/Import custom function of built-in object in ES6?ES6中内置对象的导出/导入自定义功能?
【发布时间】:2017-09-26 12:56:56
【问题描述】:

我有一个“自定义”目录,我想在其中存储对内置对象原型所做的任何更改。每个被修改的内置对象都有自己的文件(即custom/String.js 用于对String.prototype 的任何修改)。

除了这些文件之外,我还有一个名为 custom/All.js 的文件,用于导出要使用的自定义功能。

All.js

export * from './String'
export {Multiply} from './Array'

ma​​in.js

import * from './custom/All'

String.js

// something like this
export String.prototype.doSomething = function() {}

这样的事情可以做吗?

【问题讨论】:

  • 所以要导出并修改原型?
  • @AndrewLi 是的,差不多。本质上,我想将更改导入到 String 的原型中,而不是函数本身(如果可能的话)
  • @Rajesh No. 使用起来更奇怪。
  • @Rajesh 我的偏好是直接修改String.prototype,因为这将是整个代码库的广泛变化。从 String 扩展将要求我必须在任何使用它的文件中导入这个新类

标签: javascript ecmascript-6 es6-modules


【解决方案1】:

当然it's still considered a bad idea to extend builtin prototypeseven in ES6,但如果你坚持这样做而不是简单易用的静态辅助函数模块:

你不应该export 任何东西。这些是突变,没有任何价值。你只需要包含它的副作用的模块代码。

// main.js
import './custom';

// custom/index.js
import './String';
import './Array';

// custom/String.js
String.prototype.doSomething = function() {};

【讨论】:

    猜你喜欢
    • 2016-09-09
    • 2016-05-21
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多