相关疑难解决方法(0)

如何解释ECMAScript术语中的对象引用?

考虑一下:

var a = {}, b = a;
Run Code Online (Sandbox Code Playgroud)

就规格而言,b = a归结为PutValue(b, GetValue(a)),对吧?并GetValue(a)使用GetBindingValue("a", strictFlag)抽象操作,返回"值" a.而"价值"是最初分配给的"对象" a.然后存储"对象" b,就像任何其他值一样.

但究竟什么是"对象"呢?规范在哪里说Object类型的值与原语的行为不同?只是原语是不可变的,对象是可变的吗?

我问,因为我们在尝试解释对象的行为时总是谈论"对象引用"和"引用值",但我找不到与规范中类似的东西.

javascript ecmascript-5

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

什么是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
查看次数

ECMAScript(ECMA-262 5.1)中`reference`的"基本值"是什么?

我一直试图理解如何this在javascript中设置值,并发现ECMAScript语言规范非常有用.我是读取部分8.7 reference specification type,发现在该ECMAScript的参考是由3成分,base value,referenced name,strict reference flag理解部分11.2.3.

我可以假设是什么referenced name,并strict reference flag从他们的名字,但我不明白是什么base value.该文件说,base value要么是undefined,String,Boolean,NumberObject,但它并没有说这是如何设置和它是什么.我猜这是类似于上下文对象的东西.谁能解释一下?

javascript ecmascript-5

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

函数的返回值可以是JavaScript中的左值吗?

Microsoft允许使用以下语法在JScript中设置环境变量:

var sh = WScript.CreateObject("Wscript.Shell");
var env = sh.Environment("PROCESS");
env("TEST") = "testvalue";
Run Code Online (Sandbox Code Playgroud)

我想知道第三行 - 和我一起使用JSLint,它将这行称为"Bad Assigment".

但它的确有效!

是否ECMAscript标准兼容将函数的返回值作为左值(如此处)?

如果是:如何编写这样的函数?

javascript lvalue jscript

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

在javascript中的属性包

我正在调查我的范围之外的一些代码,这些代码是用我以前从未见过的风格编写的.我试图了解以下属性包的内部工作原理:

二传手:

props.Property(name) = val;
Run Code Online (Sandbox Code Playgroud)

消气:

val = props.Property(name);
Run Code Online (Sandbox Code Playgroud)

你需要实例化setter以便如上所述运行?

编辑:简化程度较低,此代码在框架内的BrowserWindow上成功运行(类似于手机环境).

var UI =
        {
            ready: function(oProps)
            {
                try
                {
                    if (oProps)
                    {
                        window.external.Property(UI.FrameWidth) = '1000';
                        window.external.Property(UI.FrameHeight) = '900';
                    }

                    window.external.Ready();
                }
                catch (e) { }
            }
    };
Run Code Online (Sandbox Code Playgroud)

提前致谢,

javascript properties jscript

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