标签: ecma262

JavaScript中[[Prototype]]与原型的关系

来自http://www.jibbering.com/faq/faq_notes/closures.html:

注意:ECMAScript定义内部Object类型的内部[[prototype]]属性.使用脚本无法直接访问此属性,但它是使用在属性访问器解析中使用的内部[[prototype]]属性引用的对象链; 对象的原型链.存在公共原型属性以允许与内部[[prototype]]属性相关联的原型的分配,定义和操作.ECMA 262(第3版)中描述了两者之间关系的细节,超出了本讨论的范围.

两者之间的关系有哪些细节?我浏览了ECMA 262,所有我读过的内容都是:

构造函数的关联原型可以由程序表达式constructor.prototype引用,

本机ECMAScript对象具有名为[[Prototype]]的内部属性.此属性的值为null或对象,用于实现继承.

每个内置函数和每个内置构造函数都有Function原型对象,它是表达式Function.prototype的初始值.

每个内置原型对象都有Object原型对象,它是表达式Object.prototype(15.3.2.1)的初始值,作为其内部[[Prototype]]属性的值,除了Object原型对象本身.

从这一点我收集到的是[[Prototype]]属性相当于prototype几乎任何对象的属性.我错了吗?

javascript ecma262

19
推荐指数
2
解决办法
3630
查看次数

18
推荐指数
2
解决办法
5489
查看次数

ECMAScript的EBNF?

我试图找到一个很好的EBNF描述ECMAScript,但到目前为止我还没有发现任何完整的.

有任何想法吗?

javascript bnf ebnf ecma262

16
推荐指数
2
解决办法
1万
查看次数

ECMAScript-262的IDE,用于node.js/V8的IDE执行/调试

我目前使用Eclipse作为其他语言的IDE,而我习惯于不必离开IDE用于任何事情 - 但是我真的很难找到纯ECMAScript-262的相同或类似的设置.

为了澄清,我不是在寻找DOM支持,jquery,HTML或类似的东西,最好只是一个内置ECMAScript-262支持(pref node.js)的IDE(调试并不重要),这样我就可以简单地运行我的代码了IDE.

有任何想法吗?

ps:请不要建议aptana.

javascript ide v8 ecma262 node.js

16
推荐指数
1
解决办法
3376
查看次数

什么是JavaScript语法中有效的左侧表达式?

好的,我们都知道有效的左侧表达式是什么.的种类.*

但是,看看ECMA-Script标准的定义,我很困惑:

LeftHandSideExpression :
    NewExpression
    CallExpression
Run Code Online (Sandbox Code Playgroud)

这只是定义中的错误,还是我在这里弄错了?我的意思是,这实际上并不意味着

new Object = 1; // NewExpression AssignmentOperator PrimaryExpression
function () { return foo; }() = 1;// CallExpression AssignmentOperator PrimaryExpression
Run Code Online (Sandbox Code Playgroud)

应该是有效的赋值表达式?


*从我谦虚的理解,这将更有意义:

LeftHandSideExpression :
    Identifier
    MemberExpression [ Expression ]
    MemberExpression . IdentifierName
    CallExpression [ Expression ]
    CallExpression . IdentifierName
Run Code Online (Sandbox Code Playgroud)

javascript grammar ecma262

15
推荐指数
1
解决办法
6527
查看次数

v8何时实施ECMAScript 5?

我注意到v8在ECMAScript第5版问题上相当沉默.

V8按照ECMA-262第3版中的规定实施ECMAScript,并在Windows XP和Vista,Mac OS X 10.5(Leopard)以及使用IA-32或ARM处理器的Linux系统上运行.

即使是bug跟踪器似乎很安静......

一个bug上你可以找到一个写这个的提交者:

V8是ECMAScript的实现,而不是JavaScript.后者是Mozilla制作的ECMAScript的非标准化扩展.V8旨在与JSC(WebKit/Safari中的ECMAScript实现)兼容插件.因此,它实现了许多ECMAScript的非标准扩展,这些扩展也在JSC中,其中大多数也是Mozilla的JavaScript语言.没有计划添加JSC中没有的非标准功能到V8.

有趣的是,他在2010年10月8日撰写了这篇文章,当时ECMAScript 5于2009年12月发布,两个月前发布了Javascript 1.8.5(ECMAScript 5的超集).

那么问题仍然是谷歌何时更新v8以在ECMAScript第5版上运行?是否有计划升级到最新的ECMAScript标准化?

javascript google-chrome v8 ecma262 ecmascript-5

15
推荐指数
1
解决办法
4451
查看次数

所有浏览器何时开始支持String.replace(regexp,replacement_function)?

根据第6版JavaScript:The Definitive Guide(Flanagan,2011):

ECMAScript v3指定替换参数replace()可以是函数而不是字符串.

我正在研究2005年编写的一些代码,其中使用了一个复杂的解决方法来替换字符串的一部分.代码的注释清楚地表明它最初使用的是功能replace()方法,但是解决方法对于跨浏览器兼容性是必需的.

ECMAScript v3于1999年问世,据我所知(从这篇论文本篇博文中可以看出),自2001年底以来,ECMAScript v3在主流浏览器中得到了支持.作者是错误的,还是有人可以解释一下为什么2005年可能需要这样的解决方案?

...

更新代码作者的实际评论说:

RegExps中的lambda函数目前是太多浏览器的问题.

改变了代码来解决问题.

作者代码适用于或运行此业务,尽管代码本身可能是个人项目.

javascript cross-browser ecma262

14
推荐指数
1
解决办法
1974
查看次数

为什么C#和ECMAScript规范之间的可读性存在很大差异?

我一直在研究ECMAScript规范,并发现它非常难以阅读和理解.我经常不得不回溯以保持头脑中的概念.在阅读C#规范时,我能够学习该语言的组件而无需不断地移动文档.

ECMAScript规范

C#规范

javascript c# ecma262

13
推荐指数
1
解决办法
1534
查看次数

Javascript最大尺寸类型?

查看javascript类型我试图找出某些数据类型的最大存储大小.例如,我设置了一个快速递归算法来增加var大小,直到浏览器崩溃,最终在我现有版本的chrome上的字符串接近128mb(或者可能是256).

我一直在做这个痛苦的方式,因为我找不到任何关于此的规格,但是持续的浏览器崩溃使得这是一个痛苦的试验(尝试捕获因某些原因在这个特定问题上似乎无用).

我正在寻找有关其他类型的最大存储大小的信息(数组,对象,函数,字符串,数字,bools ......)

EMCA-262第8.4节对此持模糊态度

String的长度是其中的元素数(即16位值).空String的长度为零,因此不包含任何元素.

...所以也许这是需要在浏览器中实现的东西?

然而,ECMA会告诉我们有关数字的信息,例如

Number类型具有18437736874454810627(即2 ^ 64-2 ^ 53 + 3)值,表示IEEE标准二进制浮点运算中指定的双精度64位格式IEEE 754值,但9007199254740990(即,2 ^ 53-2)IEEE标准的不同"非数字"值在ECMAScript中表示为单个特殊NaN值.

但后来我没有看到任何关于物体的东西.

我可以期待在浏览器中使用什么?是否有任何代码库可以帮助管理非常大的对象和字符串?

我可以在一个脚本中分配多少内存?

javascript cross-browser ecma262

13
推荐指数
2
解决办法
2万
查看次数

Javascript/ECMAScript中函数的范围是什么?

今天我与同事讨论了Javascript中的嵌套函数:

function a() {
   function b() {
      alert('boo')
   }
   var c = 'Bound to local call object.'
   d = 'Bound to global object.'
}
Run Code Online (Sandbox Code Playgroud)

在这个例子中,试验指出b在a的体外是不可达的,就像c一样.但是,d是 - 执行a()之后.在ECMAScript v.3标准中寻找这种行为的确切定义,我没有找到我正在寻找的确切措辞; 第13节第71页没有说明,是函数声明语句创建的函数对象要绑定到哪个对象.我错过了什么吗?

javascript scope functional-programming ecma262

12
推荐指数
1
解决办法
3946
查看次数