mirror of
				https://github.com/tc39/test262.git
				synced 2025-11-03 21:24:30 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// Copyright (c) 2012 Ecma International.  All rights reserved.
 | 
						|
// This code is governed by the BSD license found in the LICENSE file.
 | 
						|
 | 
						|
/*---
 | 
						|
es5id: 13.2-17-1
 | 
						|
description: >
 | 
						|
    Function Object has 'constructor' as its own property, it is not
 | 
						|
    enumerable and does not invoke the setter defined on
 | 
						|
    Function.prototype.constructor (Step 17)
 | 
						|
---*/
 | 
						|
 | 
						|
        var desc = Object.getOwnPropertyDescriptor(Object.prototype, "constructor");
 | 
						|
 | 
						|
            var getFunc = function () {
 | 
						|
                return 100;
 | 
						|
            };
 | 
						|
 | 
						|
            var data = "data";
 | 
						|
            var setFunc = function (value) {
 | 
						|
                data = value;
 | 
						|
            };
 | 
						|
 | 
						|
            Object.defineProperty(Object.prototype, "constructor", {
 | 
						|
                get: getFunc,
 | 
						|
                set: setFunc,
 | 
						|
                configurable: true
 | 
						|
            });
 | 
						|
 | 
						|
            var fun = function () {};
 | 
						|
 | 
						|
            var verifyValue = false;
 | 
						|
            verifyValue = typeof fun.prototype.constructor === "function";
 | 
						|
 | 
						|
            var verifyEnumerable = false;
 | 
						|
            for (var p in fun.prototype) {
 | 
						|
                if (p === "constructor" && fun.prototype.hasOwnProperty("constructor")) {
 | 
						|
                    verifyEnumerable = true;
 | 
						|
                }
 | 
						|
            }
 | 
						|
 | 
						|
            var verifyWritable = false;
 | 
						|
            fun.prototype.constructor = 12;
 | 
						|
            verifyWritable = (fun.prototype.constructor === 12);
 | 
						|
 | 
						|
            var verifyConfigurable = false;
 | 
						|
            delete fun.prototype.constructor;
 | 
						|
            verifyConfigurable = fun.hasOwnProperty("constructor");
 | 
						|
 | 
						|
assert(verifyValue, 'verifyValue !== true');
 | 
						|
assert(verifyWritable, 'verifyWritable !== true');
 | 
						|
assert.sameValue(verifyEnumerable, false, 'verifyEnumerable');
 | 
						|
assert.sameValue(verifyConfigurable, false, 'verifyConfigurable');
 | 
						|
assert.sameValue(data, "data", 'data');
 |