// Copyright 2016 the V8 project authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. var b = { toString: function() { return "b"; } }; var c = { toString: function() { return "c"; } }; (function() { var expected_receiver; var obj1 = { a: 100, b_: 200, get b() { assertEquals(expected_receiver, this); return this.b_; }, set b(v) { assertEquals(expected_receiver, this); this.b_ = v; }, c_: 300, get c() { assertEquals(expected_receiver, this); return this.c_; }, set c(v) { assertEquals(expected_receiver, this); this.c_ = v; }, }; var obj2 = { boom() { super.a++; super[b]++; super[c]++; }, } Object.setPrototypeOf(obj2, obj1); expected_receiver = obj2; obj2.boom(); assertEquals(101, obj2.a); assertEquals(201, obj2[b]); assertEquals(301, obj2[c]); expected_receiver = obj1; assertEquals(100, obj1.a); assertEquals(200, obj1[b]); assertEquals(300, obj1[c]); }());