
本文共 3433 字,大约阅读时间需要 11 分钟。
call���apply���bind ���������
������������������ call���apply���bind ��������������������������� function foo() ������������������������ foo.call()���apply()���bind() ���������
1. ���������������������������������������
������������������������
call���apply ������������ undefined������������������������������ bind ������������������������������������������
call ���������������������������������������������������������������������������������������������apply ������������������������������������������
2. ������������
������������������ obj���foo ��������������� foo ������������ this ������ window������������ obj ������������������������������ window ������ window ������������
var obj = { name: 'hehe', age: 23}function foo() { console.log(this.obj.name) // 'hehe'}
var obj = { name: 'hehe', age: '23', foo: function () { console.log(this.name) // 'hehe' }}obj.foo()
��������������������������������������� obj ������������������������������������������ obj ������ name ��������������������� foo ������������ this ������������������������ this ������ window��������������� obj���
3. call ���������
������ call ��������������������������������� foo ������ this ������ obj ��������� window���
var obj = { name: 'hehe', age: 23}function foo() { console.log(this.name) // 'hehe'}foo.call(obj)
��������������������� obj ������������������ call ��������������� this ���������������������
var o = { name: 'aaaaaaa'}var obj = { name: 'hehe', age: '23', foo: function () { console.log(this.name) // 'aaaaaaa' }}obj.foo.call(o)
������ call ���������������������������������������������
var o = { name: 'aaaaaaa'}var obj = { name: 'hehe', age: '23', foo: function (n, m) { console.log(this, n, m) // { name: 'aaaaaaa' }, { a: '4' }, '6' }}obj.foo.call(o, { a: '4' }, '6')
4. apply ���������
apply ������������ this ������������ call ������������������������������������������������
var o = { name: 'aaaaaaa'}var obj = { name: 'hehe', age: '23', foo: function (n, m) { console.log(this, n, m) // { name: 'aaaaaaa' }, { a: '4' }, '6' }}obj.foo.apply(o, [{ a: '4' }, '6'])
5. call ���������������
������ Object.prototype.toString.call()
Object.prototype.toString.call([]) // [object Array]
Array.prototype.slice.call(arguments)
function list() { return Array.prototype.slice.call(arguments, 1); // apply(arguments, [1])}var list1 = list(1, 2, 3); // [2, 3]
6. bind ���������
bind ������������������ call ���������������������������������������������������������������������
var o = { name: 'aaaaaaa'}var obj = { name: 'hehe', age: '23', foo: function (n, m) { console.log(this, n, m) // { name: 'aaaaaaa' }, { a: '4' }, '6' }}obj.foo.bind(o, { a: '4' }, '6')() // ��������������� bind ��������������� foo
��� React ������������������������������������������������������������������ this ���������������������������������������
constructor(props) { super(props); this.foo = this.foo.bind(this);}
��������� JSX ��������� foo ������������this ���������������������
��������������� bind��������� this ������������������������
var obj = { name: 'hehe', age: '23', foo: function () { console.log(this) // { name: 'hehe', age: '23', foo: [Function: foo] } }}obj.foo()var Fo = obj.fooFo();// ��������� this ������ window
发表评论
最新留言
关于作者
