当前位置: 首页 > news >正文

珠海网站建设黄荣/做百度推广员赚钱吗

珠海网站建设黄荣,做百度推广员赚钱吗,wordpress ckplayer插件,百度最容易收录的网站这篇文章主要介绍了vue data不可以使用箭头函数问题,本文通过源码解析给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 首先需要明确,a() {}和 b: () > {}是不同的 1 2 3 4 5 6 let obj { a() {}, // 相当于 a:funct…

这篇文章主要介绍了vue data不可以使用箭头函数问题,本文通过源码解析给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下

 

首先需要明确,a() {}和 b: () => {}是不同的

 

1

2

3

4

5

6

let obj = {

   a() {},

   // 相当于

   a:function() {},

   b: () => {}

}

 

1 VUE.js 源码解析

注意此处只设计核心代码

这段代码也是UMD实现原理,本文这里不是重点,有兴趣的可以自行探究。

 

1

2

3

4

5

6

7

8

(function (global, factory) {

   typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :

   typeof define === 'function' && define.amd ? define(factory) :

   (global.Vue = factory());

  }(this, (function (){

   'use strict';

    console.log(this) //*undefined*

  })))

 

解析一:

对于javascript来说,非严格模式下函数都会有一个this指向,不清楚的这里有传送门this指向相关

说一下本文中涉及的this指向问题,如果不是严格模式,this应该指向window,但是由于vue作者使用的是严格模式,所以他指向了undefined

以下是vue中data的实现原理

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

(function (global, factory) {

  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :

  typeof define === 'function' && define.amd ? define(factory) :

  (global.Vue = factory());

 }(this, (function (){

  'use strict';

  function getData(data,vm) {

   return data.call(vm, vm)

  }

  function initData(params) {

   data = vm._data = typeof data === 'function'

   ? getData(data, vm)

   : data || {};

  }

  initData() 

 })))

 

也就是说每次新创建实例的时候都会去判断是否有data函数,如果有的话就会将其赋值给vm._data,心细的同学会发现对于Vmm实例来说是没有data,而是有vm._data

es5函数和es6箭头函数

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

var obj = {

  a: () => {

  'use strict';

   console.log(this,'a')

  },

  b() {

   console.log(this,'b')

  },

  c() {

   // window

   let e = () => {

    console.log(this,'e')

   }

   return e

  }

 }

 obj.a() // window

 obj.b() // obj

 obj.c()() // obj

 

对于普通函数(非严格模式下),this指向调用者,es6中的this指向声明时的上下文环境。

结合以上两点解析今天的问题

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

(function (global, factory) {

  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :

  typeof define === 'function' && define.amd ? define(factory) :

  (global.Vue = factory());

 }(this, (function (){

  'use strict';

  let vm = {}

  var data = () => {

   console.log(this);//undefined

   return {

    a: 1

   }   

  }

  function getData(data,vm) {

   return data.call(vm, vm)

  }

  function initData(params) {

   data = vm._data = typeof data === 'function'

   ? getData(data, vm)

   : data || {};

  }

  initData()

  console.log(vm);

 })))

 

以上代码说明你使用箭头函数给data: () => {} this指向undefined的时候,是会赋值给vm._data,但是他会相当于一个全局的,只要你不刷新页面他就会缓存你的data。

如果我们使用data() {}this指向Vm实例,所以他会随着实例更新。

 

转载https://www.php.cn/js-tutorial-405826.html

转载于:https://www.cnblogs.com/gopark/p/11444730.html

http://www.jmfq.cn/news/4963987.html

相关文章:

  • 定制网站制作平台/购买域名的网站
  • 江苏城市建设职业学院网站/淘宝店铺运营推广
  • 怎么自己网站建设/彩虹云商城网站搭建
  • 国内什么网站用asp.net/好口碑关键词优化地址
  • 做的网站如何更换网站模板/温州高端网站建设
  • 网站美工/优化营商环境的措施建议
  • 上海快速网站建设/创建网站需要多少资金
  • 网站建设公司账户搭建/推广哪些app最挣钱
  • dnf卖飞机的网站怎么做的/深圳百度seo怎么做
  • 网站建设常州/网站制作设计
  • h5商城网站怎么建设/软文有哪几种类型
  • 网站建设服务合同模板/站长是什么级别
  • 大连建设工程信息网华宇凤凰城东侧市政管网配套工程/seo常用工具网站
  • 深圳app开发定制公司/东莞市网络seo推广企业
  • 465端口 WordPress/上海专业的seo公司
  • wordpress 社交媒体/东莞百度搜索优化
  • 长葛网站制作/重庆网站seo诊断
  • 手机精品网站建设/最近的时事新闻
  • 海淀网站建设价格/网站广告费一般多少钱
  • 做推送的网站除了秀米还有/seo专业知识培训
  • 中国工厂网站/seo网络推广怎么做
  • wordpress中文商城/快速排名优化推广排名
  • 如何建设网站兴田德润可以吗/网络链接推广
  • 石家庄市网站建设/营销软文代写
  • 河南生产型企业网站建设/海南百度推广公司
  • 自己搭建一个网站需要多少钱?/教育培训机构营销方案
  • 绍兴网站定制公司/如何快速推广自己的产品
  • 网站核验单怎么下载/网站代运营推广
  • 网站优化两大核心要素是什么/品牌推广平台
  • 从手机上可以做网站吗/阳江网站建设