| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| function echo(m) { this.WScript ? WScript.Echo(m) : console.log(m); } |
| |
| // |
| // Win8: 762166 |
| // ES5 11.2.2 "new MemberExpression Arguments", MemberExpression is fully evaluated before Arguments. |
| // Arguments side effect can't change the constructor used for new operator. |
| // |
| |
| (function(){ |
| function x(){ echo("x");} |
| function y(){ echo("y");} |
| |
| new x(x = y); |
| new x(); |
| })(); |
| |
| (function(){ |
| function x(){ echo("x");} |
| function y(){ echo("y");} |
| |
| new x(x = y); |
| new x(); |
| |
| function foo() { |
| x(); // Reference of "x" and put it in slot |
| } |
| })(); |
| |
| (function () { |
| var o = { |
| x: function () { echo("x"); } |
| }; |
| function y() { echo("y"); } |
| |
| new o.x(o.x = y); |
| new o.x(); |
| })(); |
| |
| (function () { |
| var o = { |
| x: function () { echo("x"); } |
| }; |
| var y = { |
| x: function () { echo("y"); } |
| }; |
| |
| new o.x(o = y); |
| new o.x(); |
| })(); |