1// Copyright JS Foundation and other contributors, http://js.foundation 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15var emptyObject = {} 16 17var properties = { 18 prop1: { 19 writable: true, 20 enumerable: true, 21 configurable: false, 22 value: "I'm prop1" 23 }, 24 prop2: { 25 writable: true, 26 enumerable: true, 27 configurable: false, 28 value: "I'm prop2" 29 } 30} 31 32var isEnumerable = true; 33var isConfigurable = true; 34var isWritable = false; 35 36Object.defineProperties(emptyObject, properties); 37 38emptyObject.prop1 = "hello"; 39emptyObject.prop2 = "world"; 40 41if (emptyObject.prop1 === "hello" && emptyObject.prop2 == "world") 42 isWritable = true; 43 44for (p in emptyObject) { 45 if (emptyObject[p] === "hello") 46 isEnumerable = !isEnumerable; 47 else if (emptyObject[p] === "world") 48 isEnumerable = !isEnumerable; 49} 50 51isConfigurable = delete emptyObject.prop1 && delete emptyObject.prop2 52 53assert(isWritable && isEnumerable && !isConfigurable); 54