blob: 0bfd49e5b86dc61a4ddef9dc276d197187f96faa [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// 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});