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

