blob: 7f42fd2c6e336db2f9a246c6d47da3b4b7a4236d [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 def_prop_array()
{
var array = [];
Object.defineProperty(array, 0, { get: function() { WScript.Echo("array[0]"); } });
var sum = 0;
for (var i = 0; i < 3; i++)
{
sum += array[0];
}
}
function def_prop_object()
{
var object = {};
Object.defineProperty(object, "sum", { get: function() { WScript.Echo("sum"); } });
var sum = 0;
for (var i = 0; i < 3; i++)
{
sum += object.sum;
}
}
function def_props_array()
{
var array = [];
Object.defineProperties(array,
{
0: { get: function() { WScript.Echo("array[0]"); } },
1: { get: function() { WScript.Echo("array[1]"); } }
});
var sum = 0;
for (var i = 0; i < 3; i++)
{
sum += array[0];
}
}
function def_props_object()
{
var object = {};
Object.defineProperties(object,
{
sum1: { get: function() { WScript.Echo("sum1"); } },
sum2: { get: function() { WScript.Echo("sum2"); } }
});
var sum = 0;
for (var i = 0; i < 3; i++)
{
sum += object.sum1;
}
}
function def_props_number()
{
function diag() {
WScript.Echo("Type: " + (typeof this));
WScript.Echo(" Is Object: " + (this instanceof Object));
WScript.Echo(" Is Number: " + (this instanceof Number));
}
Object.defineProperty(
Number.prototype,
"foo",
{
set: diag
});
Object.defineProperty(
Number.prototype,
"42",
{
set: diag
});
var runTests = function(obj) {
WScript.Echo("** Testing property 'foo'");
obj.foo = {};
WScript.Echo("");
WScript.Echo("** Testing property 42");
obj[42] = {};
WScript.Echo("");
}
var i = 3;
runTests(i);
var d = 3.14;
runTests(d);
}
function main()
{
def_prop_array();
def_prop_object();
def_props_array();
def_props_object();
def_props_number();
}
main();