'use strict'; var t = { mutableProp: 'helloWorld' }; //by default Object.defineProperty creates an immutable property that is not enumerable Object.defineProperty(t, 'immutableProp', { value: 'worldHello!', configurable: true }); console.log('T with non enumerable immutable prop ', t); console.log('-------------'); Object.defineProperty(t, 'immutableProp', { enumerable: true }); console.log('T with enumerable immutable prop ', t); console.log('-------------'); Object.defineProperty(t, 'immutableProp', { configurable: false, writable: false, value: 'FROZEN PROPERTY', enumerable: true }); console.log('T frozen immutable prop ', t); console.log('-------------');