| //------------------------------------------------------------------------------------------------------- |
| // 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(); |