mirror of
				https://github.com/tc39/test262.git
				synced 2025-10-31 11:44:31 +01:00 
			
		
		
		
	sourceRevisionAtLastExport: 33f2fb0e53d135f0ee17cfccd9d993eb2a6f47de targetRevisionAtLastExport: 31340cbd9add103f586d501b0c3354b7b182abc0
		
			
				
	
	
		
			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]);
 | |
| }());
 |