• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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