| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| function write(v) { WScript.Echo(v + ""); } |
| |
| function f1() |
| { |
| this.x1 = "hello"; |
| } |
| |
| f1.apply(); |
| write("x1 : " + x1); |
| |
| x1 = 0; |
| f1.apply(null); |
| write("x1 : " + x1); |
| |
| x1 = 0; |
| f1.apply(undefined); |
| write("x1 : " + x1); |
| |
| var o = new Object(); |
| |
| x1 = 0; |
| f1.apply(o); |
| write("x1 : " + x1); |
| write("o.x1 : " + o.x1); |
| |
| function f2(a) |
| { |
| this.x2 = a; |
| } |
| |
| x2 = 0; |
| f2.apply(); |
| write("x2 : " + x2); |
| |
| x2 = 0; |
| f2.apply(null); |
| write("x2 : " + x2); |
| |
| x2 = 0; |
| f2.apply(undefined); |
| write("x2 : " + x2); |
| |
| x2 = 0; |
| f2.apply(o); |
| write("x2 : " + x2); |
| write("o.x2 : " + o.x2); |
| |
| x2 = 0; |
| f2.apply(null, ["world"]); |
| write("x2 : " + x2); |
| |
| x2 = 0; |
| f2.apply(undefined, ["world"]); |
| write("x2 : " + x2); |
| |
| x2 = 0; |
| f2.apply(o, ["world"]); |
| write("x2 : " + x2); |
| write("o.x2 : " + o.x2); |
| |
| |
| function blah() |
| { |
| this.construct.apply(this, arguments); |
| write("after apply"); |
| return new Object(); |
| } |
| |
| function blah2() |
| { |
| try |
| { |
| this.construct.apply(this, arguments); |
| } |
| catch (e) |
| { |
| } |
| |
| write("after apply"); |
| return new Object(); |
| } |
| |
| blah.prototype.construct = function(x, y) |
| { |
| this.a = x; |
| this.b = y; |
| } |
| blah2.prototype.construct = function(x, y) |
| { |
| this.a = x; |
| this.b = y; |
| } |
| |
| var o = new blah(1, 2); |
| write(o.a); |
| write(o.b); |
| |
| o = new blah2(1, 2); |
| |
| write(o.a); |
| write(o.b); |
| |
| function f() {} |
| |
| f.apply({},{}); |
| f.apply({},{length:null}); |
| f.apply({},{length:undefined}); |
| f.apply({},{length:0.5}); |