mirror of https://github.com/tc39/test262.git
40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
// Copyright (C) 2015 the V8 project authors. All rights reserved.
|
|
// This code is governed by the BSD license found in the LICENSE file.
|
|
/*---
|
|
esid: sec-array.of
|
|
es6id: 22.1.2.3
|
|
description: Passes the number of arguments to the constructor it calls.
|
|
info: |
|
|
Array.of ( ...items )
|
|
|
|
1. Let len be the actual number of arguments passed to this function.
|
|
2. Let items be the List of arguments passed to this function.
|
|
3. Let C be the this value.
|
|
4. If IsConstructor(C) is true, then
|
|
a. Let A be Construct(C, «len»).
|
|
...
|
|
---*/
|
|
|
|
var len;
|
|
var hits = 0;
|
|
|
|
function C(length) {
|
|
len = length;
|
|
hits++;
|
|
}
|
|
|
|
Array.of.call(C);
|
|
assert.sameValue(len, 0, '`Array.of.call(C);` called `new C(0)`');
|
|
assert.sameValue(hits, 1, 'Called constructor once per call');
|
|
|
|
Array.of.call(C, 'a', 'b')
|
|
assert.sameValue(len, 2, '`Array.of.call(C, "a", "b"));` called `new C(2)`');
|
|
assert.sameValue(hits, 2, 'Called constructor once per call');
|
|
|
|
Array.of.call(C, false, null, undefined);
|
|
assert.sameValue(
|
|
len, 3,
|
|
'`Array.of.call(C, false, null, undefined);` called `new C(3)`'
|
|
);
|
|
assert.sameValue(hits, 3, 'Called constructor once per call');
|