最近整理了一篇手撕bind方法的文章
一个疑问?
我们模拟实现bind方法,终归是通过apply实现的。而它源码是如何实现的,对于我来说就像一个黑盒。也就是说:不用apply,它是如何实现?
已经得到了我想要的答案
虽然..其他答友提到JS源代码的实现可能是C/C++
但是,感谢jsdeferred的解答,使得我能够不借助apply手撕bind
完整版手撕bind代码及逻辑实现过程已经整理到我的个人博客:Crushdada's Blog 以及思否文章
最近整理了一篇手撕bind方法的文章
一个疑问?
我们模拟实现bind方法,终归是通过apply实现的。而它源码是如何实现的,对于我来说就像一个黑盒。也就是说:不用apply,它是如何实现?
已经得到了我想要的答案
虽然..其他答友提到JS源代码的实现可能是C/C++
但是,感谢jsdeferred的解答,使得我能够不借助apply手撕bind
完整版手撕bind代码及逻辑实现过程已经整理到我的个人博客:Crushdada's Blog 以及思否文章
ECMA 只规定表现,具体如何实现取决于各家浏览器引擎。
以 V8 为例,相关源码主要散落在 src/runtime.cc
、src/profile-generator.cc
、src/factory.cc
等几个文件里,感兴趣的话可以自行阅读相关的 C/C++ 代码。
P.S. 所有原生方法对你来说都是黑盒的,你要关心为啥只关心 apply
?
9 回答9.4k 阅读
6 回答5.1k 阅读✓ 已解决
5 回答3.7k 阅读✓ 已解决
4 回答8k 阅读✓ 已解决
7 回答10.1k 阅读
5 回答8.3k 阅读
2 回答10.4k 阅读✓ 已解决
回想一下你问的这个问题