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.7 - 6 - a - 171
2014-07-22 01:09:02 +02:00
description : >
Object . defineProperties - 'O' is an Array , 'P' is the length
property of 'O' , the [ [ Value ] ] field of 'desc' is less than value
of the length property , test the [ [ Configurable ] ] attribute of
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 arr = [ 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 //we are not allowed to set 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 . defineProperties ( arr , {
length : {
value : 1
}
} ) ;
2014-07-22 01:09:02 +02:00
2015-08-13 17:41:47 +02:00
assert . sameValue ( arr . length , 1 , 'arr.length' ) ;
assert . sameValue ( arr . hasOwnProperty ( "1" ) , false , 'arr.hasOwnProperty("1")' ) ;
assert . sameValue ( arr [ 0 ] , 0 , 'arr[0]' ) ;
assert . sameValue ( Array . prototype [ 1 ] , 1 , 'Array.prototype[1]' ) ;