Questions tagged «ecmascript-6»

ECMAScript规范的2015版本现已成为标准(ECMAScript 2015)。仅在问题专门与ECMAScript 2015中提供的新功能或技术更改有关的情况下使用此标记。

10
JavaScript扩展类
我有一个基类: function Monster() { this.health = 100; } Monster.prototype.growl = function() { console.log("Grr!"); } 我想扩展并创建另一个类: function Monkey extends Monster() { this.bananaCount = 5; } Monkey.prototype.eatBanana { this.bananaCount--; this.health++; //Accessing variable from parent class monster this.growl(); //Accessing function from parent class monster } 我已经做了大量的研究,并且似乎有许多复杂的解决方案可以在JavaScript中进行。在JS中完成此工作的最简单,最可靠的方法是什么?

2
使用webpack,ES6,ReactJS导入JavaScript文件和调用函数
尝试做一些我想会很简单的事情。我想导入一个现有的JavaScript库,然后调用它的函数。因此,例如,我想导入blah.js,然后调用blah()。 import React from 'react'; import {blah} from 'blah/js/blah.js'; class MyClass extends React.Component { constructor() { super(); } componentDidMount() { window.addEventListener('resize', this.handleResize); } componentWillUnmount() { window.removeEventListener('resize', this.handleResize); } handleResize() { blah.blah(); } render() { .... } } export default MyClass; 只是想知道要完成这项工作我需要做什么神奇的组合。也许我只是错过了重点。该示例给出错误“ TypeError:_blah.blah未定义”。

3
ES6导出默认,具有多个相互引用的功能
在es6中,您可以定义这样的功能模块 export default { foo() { console.log('foo') }, bar() { console.log('bar') }, baz() { foo(); bar() } } 上面的代码似乎是有效的代码,但是如果我调用baz()它,则会引发错误: ReferenceError: foo is not defined 您如何foo从另一个函数调用?在这种情况下baz 编辑 这是实际上不起作用的代码。我简化了代码,因此只是所需的核心 const tokenManager = { revokeToken(headers) { ... }, expireToken(headers) { ... }, verifyToken(req, res, next) { jwt.verify(... => { if (err) { expireToken(req.headers) …



2
类型“ ObjectConstructor”上不存在属性“ entries”
我正在研究ng2实现。我正在使用以下函数调用将对象转换为数组: var authors = Object.entries(responseObject.Authors); 这是一个标准的js函数。但是,ts编译器返回以下错误: "Property 'entries' does not exist on type 'ObjectConstructor'" 根据一个快速的谷歌,似乎解决方案可能是将CompilerOptions target属性从es5更改为es6。但是,在对以前的问题进行了一些先前的研究之后,我认为我可以通过在下面的tsconfig.json中包含其他“ lib”属性来利用es6功能: "compilerOptions": { "emitDecoratorMetadata": true, "experimentalDecorators": true, "module": "commonjs", "noEmitOnError": true, "noImplicitAny": false, "outDir": "../Scripts/", "removeComments": false, "sourceMap": true, "target": "es5", "moduleResolution": "node", "lib": [ "es2015", "dom" ] } 我也尝试将target属性更改为es2015,然后重建项目并执行“ typescriptUsingTsConfig”,但仍然遇到相同的错误。知道我可以在这里做什么以利用Object.entries()函数吗?


7
模板字符串ES6防止换行
我有一个长字符串,使用ES6模板字符串构建,但是我希望它没有换行符: var string = `As all string substitutions in Template Strings are JavaScript expressions, we can substitute a lot more than variable names. For example, below we can use expression interpolation to embed for some readable inline math:` console.log(string); 结果: As all string substitutions in Template Strings are JavaScript expressions, …

5
ECMAScript 6类析构函数
我知道ECMAScript 6具有构造函数,但是否有ECMAScript 6的析构函数之类的东西? 例如,如果我将一些对象的方法注册为构造函数中的事件侦听器,则我想在删除对象时将其删除。 一种解决方案是约定desctructor为每个需要这种行为的类创建一个方法,然后手动调用它。这将删除对事件处理程序的引用,因此我的对象将真正准备好进行垃圾回收。否则,由于这些方法,它将保留在内存中。 但是我希望ECMAScript 6是否具有本机功能,可以在对象被垃圾回收之前立即调用。 如果没有这种机制,这种问题的模式/惯例是什么?

3
Browserify,Babel 6,Gulp-点差运算符上的意外令牌
我正在尝试使我的Browserify / Babelify / Gulp在我的项目中运行,但不会使用散布运算符。 我从gulpfile中收到此错误: [SyntaxError: /Users/mboutin2/Desktop/Todo-tutorial/src/reducers/grocery-list-reducers.js: Unexpected token (16:8) while parsing file: /Users/mboutin2/Desktop/Todo-tutorial/src/reducers/grocery-list-reducers.js] 这是我的gulpfile.js var gulp = require('gulp'); var source = require('vinyl-source-stream'); var browserify = require('browserify'); var sourcemaps = require('gulp-sourcemaps'); var uglify = require('gulp-uglify'); var buffer = require('vinyl-buffer'); var babelify = require('babelify'); gulp.task('build', function () { return browserify({entries: …

8
JShint中的ES6-.jshintrc具有esversion,但仍收到警告(使用atom)
我正在使用atom,并且我尝试了几种不同的jshint软件包,它们都给出警告,内容为 "template literal syntax' is only available in ES6 (use 'esversion: 6')" 我创建了一个顶级.jshintrc文件(在根目录),并添加了以下json: { "esversion":6 } 但是,它仍然抛出相同的错误。任何想法如何解决。我已经包含了指向JSHint选项页面的链接。我想开始使用ES6语法,但希望不要有额外的警告。 谢谢SO社区!

9
React.js ES6避免将'this'绑定到每个方法
最近,我开始修补React.js,我喜欢它。我开始使用常规的ES5,以便掌握所有内容,所有文档均使用ES5编写... 但是现在我想尝试一下ES6,因为它有光泽而且是新的,而且似乎确实简化了一些事情。让我感到困扰的是,对于我添加到组件类中的每个方法,现在都必须将“ this”绑定到该方法,否则它将无法正常工作。所以我的构造函数最终看起来像这样: constructor(props) { super(props); this.state = { ...some initial state... } this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); this.someHandler = this.someHandler.bind(this); } 如果我要在类中添加更多方法,这将变得更大,更难看。 我的问题是,是否有某种方法可以解决此问题,或者至少使其更容易,更短且更不丑陋?我想在React中使用ES6的主要原因之一是使我的代码更简洁,但这却相反。任何建议或意见将不胜感激。

1
ES6对象解构默认参数
我正在尝试找出是否有一种方法可以使用默认参数的对象分解,而不必担心部分定义了对象。考虑以下: (function test({a, b} = {a: "foo", b: "bar"}) { console.log(a + " " + b); })(); 运行代码段Hide results展开摘要 {a: "qux"}例如,当我用调用时,我会qux undefined在控制台中看到真正想要的时间qux bar。有没有一种方法可以实现而无需手动检查对象的所有属性?

5
如果您不解决或拒绝诺言,会发生什么?
我有一个我要兑现诺言的情况。承诺基本上是由ajax请求触发的。 拒绝诺言后,它会显示一个错误对话框,提示服务器错误。 我想做的是,当响应代码为401时,我既不想解析承诺也不会拒绝承诺(因为它已经显示了错误对话框)。我只想重定向到登录页面。 我的代码如下所示: function makeRequest(ur, params) { return new Promise(function (resolve, reject) { fetch(url, params).then((response) => { let status = response.status; if (status >= 200 && status < 300) { response.json().then((data) => { resolve(data); }); } else { if (status === 401) { redirectToLoginPage(); } else { response.json().then((error) => …

6
如何配置ESLint以允许使用胖箭头类方法
Parsing error: Unexpected token =当我尝试整理Es6类时,ESLint引发错误。我缺少在eslint中启用胖箭头类方法的配置参数吗? 范例类别: class App extends React.Component{ ... handleClick = (evt) => { ... } } .eslint { "ecmaFeatures": { "jsx": true, "modules":true, "arrowFunctions":true, "classes":true, "spread":true, }, "env": { "browser": true, "node": true, "es6": true }, "rules": { "strict": 0, "no-underscore-dangle": 0, "quotes": [ 2, "single" ], …

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.