39 lines
1.0 KiB
JavaScript
39 lines
1.0 KiB
JavaScript
|
// 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]);
|
||
|
}());
|