标签: ecma262

4
推荐指数
2
解决办法
545
查看次数

ActionScript就像JavaScript?

我有一本书,Essential ActionScript 3(O'Reilly),以了解使用该语言.它提到ActionScript 3是ECMAScript的一个实现,就像Javascript一样.我觉得这很奇怪,因为有很多不同之处.在Javascript中,据我所知,你不能给变量一个类型(var marvin:Robot)或创建"传统"类和接口.但是,这可以在ActionScript中实现.

这是怎么回事?

javascript actionscript ecma262

3
推荐指数
1
解决办法
2387
查看次数

JavaScript日期构造函数和时区

在JavaScript/ECMAScript/JScript中的Date构造函数允许传递自1970年1月1日午夜以来的毫秒数.无论在客户机器的时区还是格林威治标准时间午夜,我都无法找到文件是否是午夜.这是什么?它可以依赖于不同的浏览器和版本吗?这是官方记录在哪里吗?

javascript time timezone ecma262

3
推荐指数
1
解决办法
1128
查看次数

我需要帮助翻译ECMAScript语法的这一部分吗?

我一直在研究自己实施的ECMAScript已有一段时间了.我基本上已经手工完成了所有工作,以帮助深入了解这个过程.反复尝试分析和理解语法的这一部分已经失败,所以我一直在研究项目的其他部分,但现在我正处于对象文字的工作,所以我真的需要对语法分析器进行优化.任何人都可以把这个用语言解析器新手可以理解吗?

我最大的困惑来源如下:

新的MemberExpression参数

这应该是一个成员表达式,但这似乎与以下内容冲突:

NewExpression :
    MemberExpression 
    new NewExpression

新表达式是成员表达式还是左侧表达式?说实话,我在为具体语法布置合适的C#类时遇到了麻烦.

MemberExpression : 
    PrimaryExpression 
    FunctionExpression 
    MemberExpression [ Expression ] 
    MemberExpression . IdentifierName 
    new MemberExpression Arguments 

NewExpression :
    MemberExpression 
    new NewExpression 

CallExpression :
    MemberExpression Arguments 
    CallExpression Arguments 
    CallExpression [ Expression ] 
    CallExpression . IdentifierName 

LeftHandSideExpression :
    NewExpression 
    CallExpression 

这是我一直在使用的课程设计,但是当我继续研究规范时,我的怀疑就不会消失.

public abstract class LeftHandSideExpression : ConcreteExpression
{

}

public sealed class NewExpression : LeftHandSideExpression
{
    public NewExpression(MemberExpression memberExpression, Arguments arguments)
    {

    }

    public NewExpression(NewExpression newExpression, Arguments arguments)
    {

    }        
}

public sealed class …
Run Code Online (Sandbox Code Playgroud)

javascript c# grammar ecma262

3
推荐指数
1
解决办法
270
查看次数

JavaScript Object属性查找 - 语法是否重要?

这是一个关于JavaScript(ECMAScript)语言的基本问题,所以如果它是重复的话我会提前道歉(一点点搜索没有透露我的确切问题).

在ECMAScript中,我们可以使用两种基本的句法形式来获取/设置对象的属性,它们似乎具有完全相同的效果.由于我不知道更好,我会称它们为"属性"和"关联数组"符号:

var o = {};
// Property notation.
o.foo = 'Foo'; // (set)
o.foo; // => "Foo" (get)
// Associative array notation.
o['bar'] = 'Bar'; // (set)
o['bar']; // => "Bar" (get)
// They seem to be interchangeable.
o['foo']; // => "Foo"
o.bar; // => "Bar"
Run Code Online (Sandbox Code Playgroud)

这两种符号之间是否存在真正的差异?显然,关联数组表示法允许我们在对象上查找动态生成的键(并强制将其参数强制转换为字符串),而属性表示法使用文字,但这是唯一的区别吗?

javascript syntax properties ecma262

3
推荐指数
1
解决办法
582
查看次数

在Javascript中使用保留字

在Javascript中有各种不能在里面使用的保留字Identifiers ; 其中一些实际上留作将来使用.为了澄清一点,一个Identifier是一个Identifier Name但不是保留的词.标识符名称的确切语法与此无关.

根据这里的最后一段,似乎有一些地方可以使用任何一个Identifier Name,即使它是一个保留字.文章提到有效

a.import
a["import"]
a = { import: "test" }
Run Code Online (Sandbox Code Playgroud)

虽然我很清楚第二种形式是合法的,但我一直认为第一种形式和第三种形式都不合法.

实际上,这个资源表示

foo.if
Run Code Online (Sandbox Code Playgroud)

作为无效代码.

是否有一些地方保留的话实际上是有效的?

作为一种动机,我正在编写一个API来传递表单的对象是有意义的

{
    in: foo,
    out: bar
}
Run Code Online (Sandbox Code Playgroud)

但我不想强迫用户放置括号in.

javascript identifier ecma262

3
推荐指数
1
解决办法
3601
查看次数

JavaScript中的原始包装行为

专业的Javascript for Web Developers一书中,我读到了在尝试访问原始对象的属性和方法时,JavaScript内部使用原始包装器.这是否意味着每次我尝试访问字符串原语上的length属性时,都会重新计算该值?我的直觉告诉我,因为字符串是固定的,所以它们的长度值存储在某处,只能由包装器访问,但我宁愿确定.

javascript ecma262

3
推荐指数
1
解决办法
153
查看次数

检查对象是否为构造函数-IsConstructor

我想检查JavaScript值是否是构造函数,即,它是否具有[[Construct]]内部方法。

ECMAScript定义了IsConstructor,它确实做到了这一点,但这是一个内部操作。

所以我想模仿一下。我曾考虑过尝试在try语句内实例化或子类化,但是在所有情况下都无法可靠地工作。

function isConstructor(value) {
  try {
    return new value(), true;
  } catch(err) {
    return false;
  }
}
Run Code Online (Sandbox Code Playgroud)

function isConstructor(value) {
  try {
    return new value(), true;
  } catch(err) {
    return false;
  }
}
var tests = 0,
    failed = 0;  
function test(value, expected, msg) {
  ++tests;
  try {
    var result = isConstructor(window.eval(value));
  } catch(err) {
    result = err;
  }
  if(result !== expected) {
    ++failed;
    console.log('Testing: ' + value + '\nMessage: ' + msg + …
Run Code Online (Sandbox Code Playgroud)

javascript constructor ecma262

3
推荐指数
1
解决办法
535
查看次数

哪些脚本语言与ECMA类似?

我正在寻找一种ECMAScript替代方案,作为自定义应用程序逻辑的脚本语言.我喜欢ECMA,特别是新规范的语法(如AS3).

不幸的是,AS3引擎不是开源的,无法集成到项目中.我想要一种专为面向对象使用而设计的脚本语言.

具体来说,是否有一种语言:

  • 静态类型变量(可选)
  • 课程,包括公共/私人会员
  • 继承,包括接口
  • 软件包(可选)
  • 清洁语法
  • 必须能够作为应用程序的内部脚本语言(如浏览器的Javascript)接口,不能是外部系统调用.

我宁愿做的事情

  • 凌乱的ECMA prototype对象

您了解哪些语言符合此个人资料?我很难找到专为良好的面向对象设计而设计的高质量脚本语言.

javascript scripting-language dynamic-languages actionscript-3 ecma262

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

为什么''(空字符串)渗透所有字符串?

我今天只是遇到了一些困惑,"string".indexOf('');总是回归0,但我希望-1(因为false); 相反,"string".lastIndexOf('');总是返回6

lastIndexOf更容易理解,因为字符串是6个字母长("string".length是零索引返回5)但我没有看到ECMAscript规范(5.16.0)中描述为什么 ''会被视为单词/字符边界的任何地方

究竟是什么发生在这里?

javascript string standards ecma262 language-lawyer

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

Firefox 4和IE9中的javascript有什么区别

IE9支持ecma-262 edition 5(http://en.wikipedia.org/wiki/ECMAScript),Firefox 4支持javascript 1.8.5(https://developer.mozilla.org/en/JavaScript/New_in_JavaScript/1.8.5).

IE9与ECMA-262第5版的兼容性是否与ECMAScript5相同?

我希望两个javascript引擎之间存在更多差异而不是相似之处,但我很好奇IE9在新的javascript功能方面有多接近Firefox.

javascript ecma262 internet-explorer-9 firefox4

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

我可以使用ECMAScript的`with`语句通过单个操作来定位多个对象吗?

以下不起作用(虽然它没有明确的错误),但为什么不呢?

并且...是否真的没有办法解决它,严格使用with语句?忘记使用for/foreach.

with (object1, object2) {
  attribute = value;
  method();
}
Run Code Online (Sandbox Code Playgroud)

编辑:抱歉在1中提出2个问题.我会尽量让它更清晰:

  1. 为什么上面的代码没有给出语法错误,不起作用但被接受with

  2. 如果可能的话,我们如何使用相同的属性更改多个对象with

希望以下示例将更清楚我想要实现的目标:

var object1 = { attribute: 3 };
var object2 = { attribute: 2, method: function() { alert('blah'); } };
var object3 = { method: function() {alert('bleh'); } };

var value = 4;

with (object1) 
with (object2) 
with (object3) 
{
  attribute = value;
  method();
}

alert(object1.attribute + object2.attribute);

// resulting alerts should be, …
Run Code Online (Sandbox Code Playgroud)

javascript actionscript-3 with-statement ecma262

0
推荐指数
1
解决办法
1515
查看次数