1 /* 2 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * Check Object.defineProperty, Object.defineProperties and Object.create. 26 * FIXME: yet to checks for property attribute create/modifications. 27 * 28 * @test 29 * @run 30 */ 31 32 // create an object 33 var obj = {}; 34 // data property 35 Object.defineProperty(obj, "foo", { value: "hello" }); 36 // accessor property 37 Object.defineProperty(obj, "bar", { get: function() { return "bar" } }); 38 39 print("obj.foo = " + obj.foo); 40 print("obj.bar = " + obj.bar); 41 42 // define multiple properties at one go. 43 Object.defineProperties(obj, 44 { 45 xyz: { value: 44 }, 46 abc: { get: function() { print("get abc"); return "abc"; } } 47 } 48 ); 49 50 print("obj.xyz = " + obj.xyz); 51 print("obj.abc = " + obj.abc); 52 53 function MyConstructor() {} 54 var obj2 = Object.create(MyConstructor.prototype); 55 print("obj2 in MyConstructor instance? " + (obj2 instanceof MyConstructor)); 56 57 var obj3 = Object.create(Object.prototype, 58 { 59 xyz: { value: 44 } 60 } 61 ); 62 63 print("obj3 is an Object? " + (obj3 instanceof Object)); 64 print(obj3.xyz);