Js 改变This指向的应用


const obj = {
    say() {
        Array.from(arguments).forEach((item) => {
            console.log(this.str + ' ' + item)
        })
    }
}

Object.defineProperties(obj, {
    'str': {
        'value': 'hello',
        'writable': false
    }
})

const objZh = {}
Object.defineProperties(objZh, {
    'str': {
        'value': '你好',
        'writable': false
    }
})


 
// 1
function fun1() {
    obj.say.apply(objZh, arguments)
}

// 2
function fun2() {
    obj.say.call(objZh, ...arguments)
}

// 3
function fun3() {
    obj.say.bind(objZh)
    obj.say(...arguments)
}

// 4
function fun4() {
    objZh.say = obj.say
    objZh.say(...arguments)
}

// 5
function fun5() {
    Object.assign(objZh, obj)
    objZh.say(...arguments)
}




// fun1('foo')
// fun1('foo','bar')

// fun2('foo')
// fun2('foo','bar')

// fun3('foo')
// fun3('foo','bar')

// fun4('foo')
// fun4('foo', 'bar')

fun5('foo')
fun5('foo', 'bar')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容