jjzjj

ecmascript-2017

全部标签

javascript - 如何在异步/等待语法中使用 Promise.prototype.finally()?

实际上我的主要问题是在async/awaitES8语法中使用Promise.prototype.catch(),毫无疑问是Promise。prototype.then()存在于async/await语法的本质中。我搜索了关于在async/await中使用Promise.prototype.catch()并找到了这个:async()=>{try{constresult1=awaitfirstAsynchronousFunction();constresult2=awaitsecondAsynchronousFunction(result1);console.log(result2);}c

javascript - 误报 "Lexical declarations require ECMAScript 6"和 "TypeScript 1.x feature. Current language is 1.4"错误消息

在将TypeScript更新到版本1.7(目前最新版本)后,我一直看到Resharper指出错误,例如在使用namespace、const和let,即使这个版本的TypeScript应该支持它们。例如:TypeScript1.x功能。当前语言是1.4和词法声明(let和const)需要ECMAScript6编译器目标。当前目标是ECMAScript5。 最佳答案 我的Resharper(10.0.1)版本似乎无法检测到TypeScript版本。要解决此问题,您可以手动指定版本。由于此版本的Resharper(发布时为最新版本)不支持

javascript - setTimeout() : If not defined in EcmaScript spec, 我在哪里可以了解它是如何工作的?

我有anotherquestioninSOaboutsetTimeout(),其中一位用户提到如果函数参数是一个字符串,它会在全局范围内进行评估,否则就不会。这让我大开眼界,所以我试图找到更多关于setTimeout实际工作原理的信息,但它不是EcmaScript规范的一部分,甚至MDN也没有我在SO中找到的特定信息。关于setTimeout()的工作原理有一些很好的引用吗? 最佳答案 setTimeout等不在ECMAScript规范中,因为它们不是JavaScript功能。它们是浏览器环境的window对象的特征。其他环境(Wi

javascript - 如何使用 ECMAScript 5 定义默认的 getter 和 setter?

如何为原型(prototype)指定默认的getter?对于默认getter,我的意思是在调用obj.undefinedProperty123时调用的函数。我试过Object.prototype.get=function(property){..}但在这种情况下不会调用。 最佳答案 在ECMAScript5中,您只能通过Object.defineProperty拦截对特定命名属性(不是所有属性)的获取/设置操作。:Object.defineProperty(someObj,"someProp",{get:function(){con

javascript - 如何可靠地检查对象是 EcmaScript 6 Map/Set?

我只想检查一个对象是Map还是Set而不是Array。我使用lodash的_.isArray检查数组。functionmyFunc(arg){if(_.isArray(arg)){//doSomethingWithArray(arg)}if(isMap(arg)){//doSomethingWithMap(arg)}if(isSet(arg)){//doSomethingWithSet(arg)}}如果我要实现isMap/isSet,它需要看起来像什么?如果可能的话,我希望它能够捕获Map/Set的子类。 最佳答案 这种情况类似于正

javascript - 在 ES6 代码中扩展 EcmaScript 5 类

我想在新项目中使用EcmaScript6(通过Browserify和Babelify),但它依赖于用ES5编写的第三方库。问题是在我的项目中创建从库中的子类扩展的子类。例如://LibrarywritteninES5functionCreature(type){this.type=type;}//mycodeinES6classFishextendsCreature{constructor(name){super("fish");this.name=name;}}除了没有运行Creature()构造函数外,这几乎可以正常工作。我设计了一个解决方法/hack,它首先构造父类的对象,然后向

javascript - ECMAScript(ECMA-262 5.1)中的 `base value` 的 `reference` 是什么?

我一直在尝试理解this值是如何在javascript中设置的,并且发现ECMAScript语言规范非常有用。我在读section8.7referencespecificationtype发现ECMAScript中的引用由3个部分组成,basevalue,referencedname,strictreferenceflag了解section11.2.3.我可以根据他们的名字假设什么是referencedname和strictreferenceflag,但我不明白什么是basevalue.文件说basevalue是undefined,String,Boolean,Number和Objec

javascript - ECMAScript5 新功能的 Polyfill 或解决方法?

我想用新的ECMAScript5features编写我的JS代码这在今天和future都有效。因为并非所有浏览器都支持所有功能(尤其是IE),例如Object.create、Array.isArray或JSON。我知道一些解决方法,例如使用json2.js来获取JSON支持。我想了解其他功能的更多polyfill或解决方法。 最佳答案 看看这些:https://github.com/kriskowal/es5-shimhttps://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Br

javascript - 为什么 ECMAScript 标准中没有 Object.setPrototypeOf(...)?

显然使用__proto__属性仍然是操作原型(prototype)链的主要方式,尽管这不符合标准并且IE不支持它。虽然您也可以通过使用new构造函数构造继承,但与__proto__属性或符合标准的Object.getPrototypeOf函数相比,这似乎是一个不必要的复杂化.编辑:如答案中所述,此方法现在确实存在(ES6标准)。但是请注意性能警告:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/setPrototypeOf 最佳答案

javascript - ECMAScript 中访问器属性和数据属性之间的区别?

ECMAScript版本5规范引入了一种称为访问器属性的新型属性。与称为数据属性的现有已知属性类型相比,仅就规范而言,这两者之间有何关联?我已经阅读了ECMAScriptv5的规范,但我不清楚确切的区别。有人可以用代码示例解释这两者吗?我在互联网上搜索过,但所有示例似乎都含糊不清。 最佳答案 命名数据属性将名称与值相关联。这意味着您可以使用该属性直接获取和检索数据,例如类中的公共(public)字段。命名访问器属性将一个名称与一个或两个访问器函数相关联。访问器函数用于存储或检索与属性关联的值。这意味着您限制对get或/和set访问器