Skip to content

Commit bccace7

Browse files
committed
fix(js): use Symbol in Function.prototype.myCall
1 parent d8aeee2 commit bccace7

File tree

3 files changed

+12
-9
lines changed

3 files changed

+12
-9
lines changed

JS/JS-br.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -752,15 +752,16 @@ Consideramos implementar eles a partir das seguintes regras:
752752
```js
753753
Function.prototype.myCall = function (context) {
754754
var context = context || window
755+
var fn = Symbol('fn')
755756
// Adiciona uma propriedade ao `context`
756757
// getValue.call(a, 'yck', '24') => a.fn = getValue
757-
context.fn = this
758+
context[fn] = this
758759
// pega os parâmentros do `context`
759760
var args = [...arguments].slice(1)
760761
// getValue.call(a, 'yck', '24') => a.fn('yck', '24')
761-
var result = context.fn(...args)
762+
var result = context[fn](...args)
762763
// deleta fn
763-
delete context.fn
764+
delete context[fn]
764765
return result
765766
}
766767
```

JS/JS-ch.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -1018,15 +1018,16 @@ getValue.apply(a, ['yck', '24'])
10181018
```js
10191019
Function.prototype.myCall = function (context) {
10201020
var context = context || window
1021+
var fn = Symbol('fn')
10211022
// 给 context 添加一个属性
10221023
// getValue.call(a, 'yck', '24') => a.fn = getValue
1023-
context.fn = this
1024+
context[fn] = this
10241025
// 将 context 后面的参数取出来
10251026
var args = [...arguments].slice(1)
10261027
// getValue.call(a, 'yck', '24') => a.fn('yck', '24')
1027-
var result = context.fn(...args)
1028+
var result = context[fn](...args)
10281029
// 删除 fn
1029-
delete context.fn
1030+
delete context[fn]
10301031
return result
10311032
}
10321033
```

JS/JS-en.md

+4-3
Original file line numberDiff line numberDiff line change
@@ -751,15 +751,16 @@ We can consider how to implement them from the following rules:
751751
```js
752752
Function.prototype.myCall = function (context) {
753753
var context = context || window
754+
var fn = Symbol('fn')
754755
// Add an property to the `context`
755756
// getValue.call(a, 'yck', '24') => a.fn = getValue
756-
context.fn = this
757+
context[fn] = this
757758
// take out the rest parameters of `context`
758759
var args = [...arguments].slice(1)
759760
// getValue.call(a, 'yck', '24') => a.fn('yck', '24')
760-
var result = context.fn(...args)
761+
var result = context[fn](...args)
761762
// delete fn
762-
delete context.fn
763+
delete context[fn]
763764
return result
764765
}
765766
```

0 commit comments

Comments
 (0)