javascript对象如何在this被改变(call,apply)的情况下获取自身属性?
伊谢尔伦
伊谢尔伦 2017-04-10 15:44:12
[JavaScript讨论组]

有个函数接受一个包裹着几个回调函数的对象,而除此之外我还想传一些自定义的参数,在那些回调里会用到。

最初想的是作为对象的属性:

var options = {
    callback: function(){
        console.log(this.a);
    }
};
xxxxx.func($.extend(options, {a: 1}));

但是回调函数执行的时候this会被改变,这样肯定就获取不到a了,有别的方法吗?

如果没有的话我想只能把a包在闭包里,例如这样,不过又要新增一个函数:

var constructOptions = function(a){
    return {
        callback: function(){
            console.log(a);
        }
    }
}
xxxxx.func(constructOptions(1));

实践了一下,这个闭包的方法也很不好,返回的对象必须是在construct函数里创建的,不然闭包也不会把a包进去

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(2)
迷茫
有什么问题呢?xxxxx.func函数是怎么调用的

var options = {
    callback: function(){
        console.log(this.a);
    }
};
//
xxxxx.func=function(object){
    ....
    object.callback();
}

xxxxx.func($.extend(options, {a: 1}));
ringa_lee

是否可以这样:

var options = {
    callback: function(param){
        console.log(param.a);
    }
};

// 模拟调用
(function(options, param){
    // 改变callback的上下文
    options.callback.call(this, param);
})(options, {a:1});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号