functional-javascript-workshop
Version:
The basics of functional programming in JavaScript. No libraries required.
68 lines (46 loc) • 1.62 kB
Markdown
# 해야할 일
`Array.prototype.slice`를 사용하는 함수를 `slice.call`이나 `slice.apply`를 사용하지 않고 작성하세요.
일반적으로는 `slice`에는 `call`이나 `apply`가 필요합니다.
```js
var slice = Array.prototype.slice
function() {
var args = slice.call(arguments) // this works
}
```
이렇게 동작하게 하고 싶습니다.
```js
var slice = yourFunction
function() {
var args = slice(arguments) // this works
}
```
## 예제
`slice` 함수는 다음과 같이 사용할 수 있습니다.
```js
var nums = [1,2,3,4,5]
// slice 함수는 첫 번째 인자로 배열을 받는 것을 제외하고
// slice의 일반적인 행동과 같아야 합니다.
slice(nums, 0, 2) // [1, 2]
slice(nums, 1, 2) // [2]
// 비교를 위한 일반적인 slice의 사용법
nums.slice(0, 2) // [1, 2]
nums.slice(1, 2) // [2]
```
## 조건
* 어떤 for/while 반복문이나 Array#forEach도 사용하지 마세요.
* `function` 키워드를 사용하지 마세요. :D
## 힌트
* 한 줄이면 충분합니다.
* 모든 JavaScript 함수는 call, apply, bind 같은 메소드를 `Function.prototype` 객체로부터 상속합니다.
* Function#call은 호출될 때 `this`의 값을 실행합니다. `someFunction.call()` 안에서 `this`의 값은 `someFunction`이 됩니다.
* Function.call 자체는 `Function.prototype`에서 상속되는 함수입니다.
```js
function myFunction() {
console.log('called my function')
}
Function.prototype.call.call(myFunction) // => "called my function"
```
## 템플릿
```js
module.exports = // 여기에 해답을 적으세요
```