//------------------------------------------------------------------------------------------------------- | |
// Copyright (C) Microsoft. All rights reserved. | |
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. | |
//------------------------------------------------------------------------------------------------------- | |
function globalFixedFunction1() { | |
WScript.Echo("globalFixedFunction1: original"); | |
} | |
var globalFixedFunction2 = function () { | |
WScript.Echo("globalFixedFunction2: original"); | |
} | |
function testGlobal() { | |
globalFixedFunction1(); | |
globalFixedFunction2(); | |
} | |
WScript.Echo("Testing the global object:"); | |
testGlobal(); | |
testGlobal(); | |
globalFixedFunction1 = function () { | |
WScript.Echo("globalFixedFunction1: overwritten"); | |
} | |
globalFixedFunction2 = function () { | |
WScript.Echo("globalFixedFunction2: overwritten"); | |
} | |
testGlobal(); | |
WScript.Echo(); | |
WScript.Echo("Testing object literal:"); | |
var objectLiteral = { | |
unique1: 0, | |
x: 0, | |
y: 1, | |
add: function () { | |
return (this.x + this.y) + " (original)"; | |
}, | |
subtract: function () { | |
return (this.x - this.y) + " (original)"; | |
} | |
} | |
function testObjectLiteral() { | |
WScript.Echo("x + y = " + objectLiteral.add()); | |
WScript.Echo("x - y = " + objectLiteral.subtract()); | |
} | |
testObjectLiteral(); | |
testObjectLiteral(); | |
objectLiteral.add = function () { | |
return (this.x + this.y) + " (overwritten)"; | |
} | |
testObjectLiteral(); | |
WScript.Echo(); | |
WScript.Echo("Testing Object.defineProperty with accessors:"); | |
var object = {}; | |
Object.defineProperty(object, "x", { get: function() { return "0 (original)"; }, configurable: true }); | |
function testObjectDefineProperty() { | |
WScript.Echo("x = " + object.x); | |
} | |
testObjectDefineProperty(); | |
testObjectDefineProperty(); | |
Object.defineProperty(object, "x", { get: function () { return "1 (overwritten)"; } }); | |
testObjectDefineProperty(); | |
WScript.Echo(); | |
WScript.Echo("Testing the Math object:"); | |
Math.identity = function (value) { | |
return value; | |
} | |
function testMathObject() { | |
WScript.Echo("Math.sin(Math.PI) = " + Math.sin(Math.PI)); | |
WScript.Echo("Math.identity(Math.PI) = " + Math.identity(Math.PI)); | |
} | |
testMathObject(); | |
testMathObject(); | |
Math.identity = function (value) { | |
return -value; | |
} | |
testMathObject(); | |
Math.sin = function (value) { | |
return -value; | |
} | |
testMathObject(); | |
WScript.Echo(); | |
WScript.Echo("Testing the Object constructor:"); | |
Object.identity = function (value) { | |
return value; | |
} | |
function testObjectConstructor() { | |
var o = {}; | |
Object.seal(o); | |
WScript.Echo("Object.identity(o) = " + Object.identity(o)); | |
WScript.Echo("Object.isSealed(o) = " + Object.isSealed(o)); | |
} | |
testObjectConstructor(); | |
testObjectConstructor(); | |
Object.identity = function (value) { | |
return "I don't know you anymore..."; | |
} | |
testObjectConstructor(); | |
Object.seal = function (object) { | |
return false; | |
} | |
testObjectConstructor(); | |
Object.isSealed = function (object) { | |
return "With the magic of JavaScript I pronounce you sealed!"; | |
} | |
testObjectConstructor(); | |
WScript.Echo(); |