| //------------------------------------------------------------------------------------------------------- |
| // 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(args) |
| { |
| if(typeof(WScript) == "undefined") |
| print(args); |
| else |
| WScript.Echo(args); |
| } |
| |
| function TestWithProto(proto) |
| { |
| function Construct() {} |
| |
| Construct.prototype = proto; |
| |
| var derived = new Construct(); |
| for(var k=0; k < 3; k++) |
| { |
| derived["p"+k] = k + 0.3; |
| } |
| function TestForInObjectWithProto() |
| { |
| for(var p in derived) |
| { |
| write(p); |
| } |
| } |
| write("Scenario: Testing forin on object with prototype"); |
| TestForInObjectWithProto(); |
| |
| // Make a change to the prototype object |
| |
| if (proto && proto.hasOwnProperty("a")) { |
| delete (proto.a); |
| } |
| |
| write("Scenario: Testing forin on object with prototype after changing prototype"); |
| TestForInObjectWithProto(); |
| } |
| |
| TestWithProto({ |
| a: 0.27, c: 0.12, g: 0.12, t: 0.23 |
| }); |
| |
| TestWithProto(null); |
| TestWithProto(undefined); |