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('').__proto__.hasOwnProperty('constructor') is true
PASS canEnum(document.createTextNode('').__proto__, 'constructor') is false
PASS x = document.createTextNode('').__proto__; x.constructor = 4; x.constructor is 4
PASS x = document.createTextNode('').__proto__; delete x.constructor; x.hasOwnProperty('constructor') is false
PASS successfullyParsed is true

TEST COMPLETE

