| //------------------------------------------------------------------------------------------------------- |
| // Copyright (C) Microsoft. All rights reserved. |
| // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. |
| //------------------------------------------------------------------------------------------------------- |
| |
| var Class = { |
| create: function() { |
| return function bar() { |
| this.initialize.apply(this, arguments); |
| } |
| } |
| }; |
| |
| var object = {}; |
| object.obj1 = Class.create(); |
| |
| object.obj1.prototype = { |
| r : 0, |
| initialize : function(r) { |
| this.r = r; |
| } |
| } |
| |
| object.obj2 = Class.create(); |
| |
| object.obj2.prototype = { |
| x : 0, |
| y : 0, |
| initialize : function(x,y) { |
| this.x = x; |
| this.y = y; |
| } |
| } |
| |
| object.obj3 = Class.create(); |
| |
| object.obj3.prototype = { |
| prop1 : {}, |
| initialize : function(a) { |
| this.prop1 = new object.obj1(a); |
| } |
| } |
| |
| object.obj4 = Class.create(); |
| |
| object.obj4.prototype = { |
| prop1 : {}, |
| prop2 : {}, |
| initialize : function(r,s,t) { |
| this.prop1 = new object.obj1(r); |
| this.prop2 = new object.obj2(s,t); |
| } |
| } |
| |
| function foo() |
| { |
| var v00 = new object.obj1(); |
| var v01 = new object.obj1(1); |
| var v02 = new object.obj1(1,2); |
| var v03 = new object.obj1(1,2,3); |
| WScript.Echo(v03.r); |
| |
| var v4 = new object.obj2(1); |
| var v5 = new object.obj2(1,2); |
| var v6 = new object.obj2(1,2,3); |
| WScript.Echo(v6.y); |
| |
| var v7 = new object.obj3(1); |
| var v8 = new object.obj3(1,2); |
| var v9 = new object.obj3(1,2,3); |
| WScript.Echo(v9.prop1.r); |
| |
| var v10 = new object.obj4(1); |
| var v11 = new object.obj4(1,2); |
| var v12 = new object.obj4(1,2,3); |
| WScript.Echo(v12.prop1.r); |
| WScript.Echo(v12.prop2.y); |
| } |
| |
| foo(); |
| foo(); |
| |
| //override apply |
| Function.prototype.apply = function(){}; |
| foo(); |
| |
| WScript.Echo("Passed"); |