请教 ES6变量的结构赋值中,自定义弹框的例子

请教 ES6变量的结构赋值中,自定义弹框的例子

1、构造函数的声明方法  function  a()与 let a = function()的区别以及为何要这样写?

2、暴露person的执行顺序,person不加括号怎么执行?

3、vue框架3-2中7:20时,为什么说this.cancel拿到是全局的下的?我看视频中隐藏弹出框的方法可以直接用this,而取消事件却要保留this才能再用,为什么?事件和方法的区别一直没弄明白。

Msg.prototype._bind = function({ el, overlay }) {
    // 保留this
    const _this = this;
    // 隐藏弹出框
    const hideMsg = function() {
      _this._el.style.transform = "translate(-50%, -50%) scale(0, 0)";
      _this._overlay.style.opacity = "0";
      }
      // 取消事件
    const close = function(e) {
      _this.cancel && _this.cancel.call(_this, e);
      hideMsg();
    };


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

1、源码中不是直接使用的this,而是_this。

http://img1.sycdn.imooc.com//climg/5da594bc099a632109420337.jpg

2、谁调用了函数,函数里面的this就指向谁。

但是不同的使用场景,this的指向也是不同的。

比如:构造函数里面的this指向实例化对象。全局下的this指向window。

如果this的指向不明朗的话,同学打印this看下到底指向的是谁,就明白了

如果还有疑问,可以新建问题进行提问哦。

如果帮助到了你,欢迎采纳~祝学习愉快~

好帮手慕言 2019-10-15 15:01:43

同学你好,关于同学的疑问,解答如下:

1、两者没有区别。一般情况下,构造函数名,首字母大写哦。语法规定就是这样的,我们只需要记住就可以了。

2、下面这种方法,可以把Person放到window下,这样就可以在全局中调用匿名函数中的Person了,不需要加(),函数名加()会立即执行的哦。

http://img1.sycdn.imooc.com//climg/5da566f4092f208104030260.jpg

我们可以打印一下window。

http://img1.sycdn.imooc.com//climg/5da567090950fe8506640410.jpg

3、之所以称为全局下的,是因为this的指向。this指向函数的调用者,如果不提前保存一下,那么点击x时,this指向的就是x,

http://img1.sycdn.imooc.com//climg/5da56af80997307a05690314.jpg

老师在视频中的写的hideMsg方法中,没有使用到this哦

http://img1.sycdn.imooc.com//climg/5da56f2d0993a67507750257.jpg


像onclick、onmouseover这些都是js事件。方法就是定义的函数。比如数组中的pop()、push()等

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 1、老师在视频中的写的hideMsg方法中,没有使用到this哦,我看源代码里这样写的; 2、意思是不管是数组还是事件,只要谁调用它,this就指向谁对吗?
    2019-10-15 17:02:56
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师