javascript必备知识点之 call、apply、bind 的应用
发布日期:2021-05-12 14:30:46 浏览次数:12 分类:精选文章

本文共 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
    上一篇:JavaScript必备知识点之XMLHttpRequest请求
    下一篇:安装谷歌扩展插件:程序包无效

    发表评论

    最新留言

    逛到本站,mark一下
    [***.202.152.39]2025年04月06日 21时35分03秒

    关于作者

        喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
    -- 愿君每日到此一游!

    推荐文章