This test checks that constructor properties are not enumeratable, but are writable deletable. On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE". PASS (function () { }).prototype.hasOwnProperty('constructor') is true PASS canEnum((function () { }).prototype, 'constructor') is false PASS x = (function () { }).prototype; x.constructor = 4; x.constructor is 4 PASS x = (function () { }).prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS declaredFunction.prototype.hasOwnProperty('constructor') is true PASS canEnum(declaredFunction.prototype, 'constructor') is false PASS x = declaredFunction.prototype; x.constructor = 4; x.constructor is 4 PASS x = declaredFunction.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS (new Function).prototype.hasOwnProperty('constructor') is true PASS canEnum((new Function).prototype, 'constructor') is false PASS x = (new Function).prototype; x.constructor = 4; x.constructor is 4 PASS x = (new Function).prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS Array.prototype.hasOwnProperty('constructor') is true PASS canEnum(Array.prototype, 'constructor') is false PASS x = Array.prototype; x.constructor = 4; x.constructor is 4 PASS x = Array.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS Boolean.prototype.hasOwnProperty('constructor') is true PASS canEnum(Boolean.prototype, 'constructor') is false PASS x = Boolean.prototype; x.constructor = 4; x.constructor is 4 PASS x = Boolean.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS Date.prototype.hasOwnProperty('constructor') is true PASS canEnum(Date.prototype, 'constructor') is false PASS x = Date.prototype; x.constructor = 4; x.constructor is 4 PASS x = Date.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS Error.prototype.hasOwnProperty('constructor') is true PASS canEnum(Error.prototype, 'constructor') is false PASS x = Error.prototype; x.constructor = 4; x.constructor is 4 PASS x = Error.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS EvalError.prototype.hasOwnProperty('constructor') is true PASS canEnum(EvalError.prototype, 'constructor') is false PASS x = EvalError.prototype; x.constructor = 4; x.constructor is 4 PASS x = EvalError.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS Function.prototype.hasOwnProperty('constructor') is true PASS canEnum(Function.prototype, 'constructor') is false PASS x = Function.prototype; x.constructor = 4; x.constructor is 4 PASS x = Function.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS Number.prototype.hasOwnProperty('constructor') is true PASS canEnum(Number.prototype, 'constructor') is false PASS x = Number.prototype; x.constructor = 4; x.constructor is 4 PASS x = Number.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS Object.prototype.hasOwnProperty('constructor') is true PASS canEnum(Object.prototype, 'constructor') is false PASS x = Object.prototype; x.constructor = 4; x.constructor is 4 PASS x = Object.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS RangeError.prototype.hasOwnProperty('constructor') is true PASS canEnum(RangeError.prototype, 'constructor') is false PASS x = RangeError.prototype; x.constructor = 4; x.constructor is 4 PASS x = RangeError.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS ReferenceError.prototype.hasOwnProperty('constructor') is true PASS canEnum(ReferenceError.prototype, 'constructor') is false PASS x = ReferenceError.prototype; x.constructor = 4; x.constructor is 4 PASS x = ReferenceError.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS RegExp.prototype.hasOwnProperty('constructor') is true PASS canEnum(RegExp.prototype, 'constructor') is false PASS x = RegExp.prototype; x.constructor = 4; x.constructor is 4 PASS x = RegExp.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS String.prototype.hasOwnProperty('constructor') is true PASS canEnum(String.prototype, 'constructor') is false PASS x = String.prototype; x.constructor = 4; x.constructor is 4 PASS x = String.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS SyntaxError.prototype.hasOwnProperty('constructor') is true PASS canEnum(SyntaxError.prototype, 'constructor') is false PASS x = SyntaxError.prototype; x.constructor = 4; x.constructor is 4 PASS x = SyntaxError.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS TypeError.prototype.hasOwnProperty('constructor') is true PASS canEnum(TypeError.prototype, 'constructor') is false PASS x = TypeError.prototype; x.constructor = 4; x.constructor is 4 PASS x = TypeError.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS URIError.prototype.hasOwnProperty('constructor') is true PASS canEnum(URIError.prototype, 'constructor') is false PASS x = URIError.prototype; x.constructor = 4; x.constructor is 4 PASS x = URIError.prototype; delete x.constructor; x.hasOwnProperty('constructor') is false PASS document.createTextNode('').hasOwnProperty('constructor') is true PASS canEnum(document.createTextNode(''), 'constructor') is false FAIL x = document.createTextNode(''); x.constructor = 4; x.constructor should be 4 (of type number). Was [object TextConstructor] (of type object). FAIL x = document.createTextNode(''); delete x.constructor; x.hasOwnProperty('constructor') should be false. Was true. PASS successfullyParsed is true TEST COMPLETE