2014-07-22 01:09:02 +02:00
// Copyright (c) 2012 Ecma International. All rights reserved.
2015-07-17 17:42:45 +02:00
// This code is governed by the BSD license found in the LICENSE file.
2014-07-22 01:09:02 +02:00
/ * - - -
2014-07-25 00:41:42 +02:00
es5id : 15.2 . 3.6 - 4 - 175
2014-07-22 01:09:02 +02:00
description : >
Object . defineProperty - 'O' is an Array , 'name' is the length
property of 'O' , the [ [ Value ] ] field of 'desc' is less than value
of the length property , test the [ [ Configurable ] ] attribute of an
inherited accessor property with large index named in 'O' can ' t
stop deleting index named properties ( 15.4 . 5.1 step 3. l . ii )
-- - * /
2018-02-15 21:33:45 +01:00
var arrObj = [ 0 , 1 ] ;
2015-08-13 17:41:47 +02:00
2018-02-15 21:33:45 +01:00
Object . defineProperty ( Array . prototype , "1" , {
get : function ( ) {
return 1 ;
} ,
configurable : true // Not setting the [[Configurable]] attribute of property "1" to false here, since Array.prototype is a global object, and non-configurbale property can't revert to configurable
} ) ;
2014-07-22 01:09:02 +02:00
2018-02-15 21:33:45 +01:00
Object . defineProperty ( arrObj , "length" , {
value : 1
} ) ;
2014-07-22 01:09:02 +02:00
2015-08-13 17:41:47 +02:00
assert . sameValue ( arrObj . length , 1 , 'arrObj.length' ) ;
assert . sameValue ( arrObj . hasOwnProperty ( "1" ) , false , 'arrObj.hasOwnProperty("1")' ) ;