| description( |
| "This test checks the behavior of the spread construct." |
| ); |
| |
| function f(a,b,c,d) |
| { |
| args = arguments; |
| passedThis = this; |
| shouldBe("passedThis", "o") |
| shouldBe("args[0]", "1") |
| shouldBe("args[1]", "undefined") |
| shouldBe("args[2]", "null") |
| shouldBe("args[3]", "4") |
| } |
| |
| var o = {} |
| o.f = f; |
| var test1 = [1, undefined, null, 4] |
| var test2 = [1, , null, 4] |
| o.f(...test1) |
| o.f(...test2) |
| |
| var h=eval('"f"') |
| o[h](...test1) |
| o[h](...test2) |
| |
| function g() |
| { |
| o.f(...arguments) |
| } |
| |
| g.apply(null, test1) |
| g.apply(null, test2) |
| |
| g(...test1) |
| g(...test2) |
| |
| var a=[1,2,3] |
| |
| shouldBe("a", "[1,2,3]") |
| shouldBe("[...a]", "[1,2,3]") |
| a=[...a] |
| shouldBe("[...a]", "[1,2,3]") |
| shouldBe("[...a,...[...a]]", "[1,2,3,1,2,3]") |
| shouldBe("[,,,...a]", "[,,,1,2,3]") |
| shouldBe("[...a,,,].join('|')", "[1,2,3,,,].join('|')") |
| shouldBe("[,...a,4]", "[,1,2,3,4]") |
| shouldBe("[,...a,,5]", "[,1,2,3,,5]") |
| shouldBe("[...a.keys()]", "[0,1,2]") |
| shouldBe("[...a.entries()].join('|')", "[[0,1],[1,2],[2,3]].join('|')") |
| Array.prototype.__defineSetter__(0, function(){ fail() }); |
| Array.prototype.__defineSetter__(1, function(){ fail() }); |
| Array.prototype.__defineSetter__(2, function(){ fail() }); |
| shouldBe("[...a]", "[1,2,3]") |
| |
| |
| |