| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- // Constructor providers
- var nonNumeric = function()
- {
- return function()
- {
- this.a = 1;
- this.b = 2;
- this.c = 3;
- };
- }
- nonNumeric.myName = "Non-numeric";
- nonNumeric.prop = 'b';
- var numeric = function()
- {
- return function()
- {
- this.a = 1;
- this[9] = 2;
- this.c = 3;
- };
- }
- numeric.myName = "Numeric";
- numeric.prop = '9';
- var ctorProviders = [ nonNumeric, numeric ];
- // Property definers
- var doNothing = function(obj, prop) {}
- doNothing.myName = "No-op";
- var defineAccessor = function(obj, prop)
- {
- Object.defineProperty(obj, prop,
- {
- set:function(v) { WScript.Echo("SETTER: " + v); },
- get:function() { WScript.Echo("GETTER"); return "GETTERVALUE";}
- });
- }
- defineAccessor.myName = "Define accessor property";
- var defineNonWritable = function(obj, prop)
- {
- Object.defineProperty(obj, prop, { value:"NONWRITABLE", writable:false } );
- }
- defineNonWritable.myName = "Define non-writable property";
- var defineWritable = function(obj, prop)
- {
- Object.defineProperty(obj, prop, { value:"WRITABLE", writable:true } );
- }
- defineWritable.myName = "Define writable property";
- var definers = [doNothing, defineAccessor, defineNonWritable, defineWritable];
- var testId = 1;
- for (var i = 0; i < definers.length; i++)
- {
- var define = definers[i];
- for (var j = 0; j < ctorProviders.length; j++)
- {
- var provider = ctorProviders[j];
- var ctor = provider();
- WScript.Echo("Test " + testId++ + ": " + provider.myName + ", " + define.myName);
- var o = new ctor();
- print(o, provider.prop);
- define(ctor.prototype, provider.prop);
- o = new ctor();
- print(o, provider.prop);
- }
- }
- function print(o, prop)
- {
- WScript.Echo("a: " + o.a);
- WScript.Echo(prop + ": " + o[prop]);
- WScript.Echo("c: " + o.c);
- }
|