为了账号安全,请及时绑定邮箱和手机立即绑定

怎么实现把方法存成变量 执行的时候 this 还不乱跳?~

怎么实现把方法存成变量 执行的时候 this 还不乱跳?~

jeck猫 2018-10-17 17:15:02
define(function () {    var fn;        function setHeight(obj) {        fn = $(obj).height; // jQuery 的 height() 方法                fn(); // 如果这么调用的话 this 就指向了全局    }        function reduction() {        fn(); // 如果这么调用的话 this 就指向了全局    }        return {        init: setHeight    };});存成变量 调用时是在全局环境 this 默认指向 window 然而这并不是我想要的~js 的 this 问题没少被吐槽 这是语言的设计问题吗 在别的语言上有这样的特征吗?~我怎么做到把 $(obj) 这个对象上的 height 方法存起来 这样的话如果后续要把 height 方法修改成 outerHeight 直接改一处就可以了 而且也不用每次去查对象原型链上的 height 了 对于这种重复用在好多地方的东西大家都是怎么处理的~
查看完整描述

1 回答

?
慕莱坞森

TA贡献1810条经验 获得超4个赞

可以这样

fn = function(){    return $(obj).height();
}

或者这样
fn = $(obj).height.bind($(obj));


查看完整回答
反对 回复 2018-11-17
  • 1 回答
  • 0 关注
  • 486 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号