Tag: ecmascript 5

JavaScript:函数执行的顺序

我正在学习JavaScript,但是有很多我无法理解的东西。 在一个在线JavaScript测验中,出现了以下问题: 以下JavaScript代码将login到控制台: const a = {}; const b = () => aa = () => {}; const c = c => '' + c + aa(b()); const d = console.log.bind(console); const e = (e => () => d(c(e++)))(0); try{ e(); }catch(a){ e(); } 我花了一些时间去了解每个variables(这里是常量)的含义。 我开始分析e()里面的try代码块的代码。 所以, e表示闭包,这意味着函数d将被调用参数c(0) , e将变成1 。 据我了解,这里d基本上代表了console.log函数(但我不明白为什么他们使用bind ?)。 现在,我知道,第一个将被执行c(0) ,然后结果控制台,对不对? […]

如何创build共享的,特权的公共方法?

现在我的一个类的一些方法是公共的,但是可以访问私有variables(它们是特权的)。 这是因为它们是在类的构造函数中创build的,所以它们的闭包可以访问对象闭包。 但是,我想避免的是每次创build新的特权方法时的内存和性能开销。 所以我想分享他们。 有什么办法可以将特权方法放入原型? 请求示例: function Person(age) { // age is private this.grow = function() { // grow is now public, but can access private "age" age += 1; } } dan = new Person(10); dan.grow(); dan.age; // undefined 这工作,我有一个公共的方法“成长”,可以访问私人variables“年龄”,但成长必须重新为每个对象。 更高性能的方法是: function Person(age) { // age is private this.age = age; // but this.age […]

是否有支持参数转换和“多态性”的JavaScript文档生成器?

您的JavaScript库越“神奇”,使用文档生成器的可能性就越小。 有没有人知道一个文档生成器,允许参数移动/参数多态性function的文档? function example(required, optional, callback) { if(typeof optional === 'function' && typeof callback === 'undefined') { callback = optional; optional = 'DEFAULT VALUE'; } // do work here } 这可以被称为如下: example(required, optional, function() { // do work }); example(required, function() { // do work }); 任何build议表示赞赏,除“使用通用评论/文档块”。 这是相关的,但不是重复的: 在JSDOC中logginggenericstypes参数

有没有ECMA5(最近的JavaScript)任何内置函数复制对象?

我需要像Node.js中的Ext.apply。 最明显的方法是定义我自己的: function simplestApply(dst, src1) { for (var key in src) if (src.hasOwnProperty(key)) Object.defineProperty(dst, key, Object.getOwnPropertyDescriptor(src, key)); } 但是没有为同一目的的任何内置function?

node.js中对象的方法和属性之间的区别

我想了解对象的属性如何与对象的原型上定义的方法相关联。 下面的代码打印“ECMA样式5”,而我期望它打印“ECMA样式3”。 var util = require('util'); function MyError() { } util.inherits(MyError, Error); Object.defineProperty(MyError.prototype, 'toJSON', { enumerable: false, value: function () { return 'ECMA5 style'; } }); MyError.prototype.toJSON = function() { return 'ECMA3 style'; } var x = new MyError(); console.log(JSON.stringify(x)); 我正在阅读一篇文章,但是我无法理解为什么样式3没有打印,因为它在文件中被定义为第二个。 不应该重写现有的方法定义吗? 我正在运行节点v0.10.21

我怎样才能将ES6代码编译到ES5的浏览器?

我已经使用npm安装了traceur,并设法编译了一个简单的ES6脚本。 我的问题是,生成的代码特定于node.js 我知道Traceur可以从浏览器运行,但我想进一步优化。 有没有一种方法来从命令行(节点)以类似的方式运行traceur如何lesscss工作?

Node.js全局评估,引发ReferenceError

我正在尝试从Rhino书籍学习JavaScript。 我试图从书中执行以下关于eval() 。 我正在使用node.js(v0.10.29)来执行示例。 var geval = eval; // aliasing eval to geval var x = 'global'; // two global variables var y = 'global'; function f () { var x = 'local'; // define a local variable eval('x += "changed";'); // direct eval sets the local variable return x; } function g () { […]

Getter中的asynchronous函数在callback中返回

我想定义一个只读对象属性,它asynchronous获取一个值,然后使用新的EcmaScript 5 getters返回它。 但是,即使下面的示例代码中的magicValue明确永远不会定义,属性总是返回undefined。 另外,当我只是return 'xxx'; 打印的值仍然是undefined 。 它只在我returncallback函数之外时才起作用。 看起来不pipe是否调用myAsyncFunction的callback,立即执行return 。 我不确定这是V8中的错误,还是滥用JavaScript的获取者。 我可以得到这个工作吗? 我想,因为我现在可以使用getter和setter,所以我将使用getters / setter来读写属性和常规函数来完成某些任务。 var User = function (id) { this.id = id; }; Object.defineProperty(User.prototype, 'magic', { get : function () { myAsyncFunction(function (magicValue) { return magicValue; }); } }); var u = new User(5); console.log(u.magic); 打印undefined 。

JavaScript执行引擎未指定?

我最近开始学习JavaScript。 我一直在使用Node.js和Angular创build几个月的应用程序。 令我困惑的主要方面之一是如何在JavaScript中编写asynchronous代码,而不必担心线程同步 , 争用条件等问题。 于是,我发现了一些有趣的文章( [1] , [2] ),它们解释了如何保证我写的任何代码总是由单个线程执行。 底线,我所有的asynchronous代码只是简单的安排在事件循环中的某个点执行。 这听起来非常像操作系统调度程序将在一个单处理器的机器上工作,其中每个进程计划在有限的时间内使用处理器,给我们假的并行感。 而callback就像中断 。 这篇文章没有提供任何特定的参考,所以我认为JavaScript执行引擎工作的最佳来源当然应该是语言规范,所以我给了我最新的EcmaScript 5.1副本。 令我惊讶的是,我发现这个执行行为并没有在那里指定。 怎么来的? 这看起来像是在浏览器和节点中的所有JavaScript执行引擎中完成的基本deviseselect。 有趣的是,我还没有find一个地方,这是指定的任何特定的引擎。 事实上,我不知道人们是如何看待事情的方式,就像上面提到的书籍和博客那样,如此明确地肯定了这一点。 所以,我有一套我认为有趣的问题。 我将不胜感激任何提供见解,评论或简单参考的答案,指引我正确地理解以下内容: 由于EcmaScript没有指定JavaScript执行引擎应该与事件循环一起工作,所以JavaScript的实现似乎可以这样工作,不仅在浏览器中,而且在Node.js中呢? 这是否意味着我可以实现一个新的与EcmaScript兼容的JavaScript引擎,实际上它提供了真正的multithreadingfunction,如同步locking,条件等function? 使用事件循环的这个执行模型是否会阻止我利用多核,如果我想要执行一个强烈的CPU绑定任务? 我的意思是,我一定可以把任务分成几块(正如其中一篇文章中所解释的那样),但这仍然是连续的,而不是并行的。 那么,JavaScript引擎如何利用多核来运行我的代码呢? 你知道任何其他有信誉的来源,对于任何特定的JavaScript引擎实现的这种行为是正式指定的吗? 如果我们不能假设一些关于执行环境的东西,那么代码如何能够在库和引擎之间移植呢? 这个问题看起来太多了,或许这个post太宽泛,无法回答。 如果closures,我会试着用不同的线索问他们。 但是他们都是围绕这样一个事实,即我想更好地理解为什么JavScript和Node是用事件循环来devise的,如果在某处(除了浏览器源代码之外)指定了我可以阅读并深入理解devise和决策在这里,更重要的是,要确切地知道什么是写书的人的信息来源。

esprima-six npm模块发生了什么事?

我的npm项目有esprima-six npm模块作为传递依赖。 最近,已经不可能下载了,如下面的npm install输出所示: npm ERR! 404 Not Found npm ERR! 404 npm ERR! 404 'esprima-six' is not in the npm registry. npm ERR! 404 You should bug the author to publish it npm ERR! 404 It was specified as a dependency of 'syntax-error' npm ERR! 404 npm ERR! 404 Note that you can also […]