data.call(vm,vm) 还是不太理解

来源:2-2 new Vue 发生了什么

学东西要快

2018-09-24

老师我之前问了你有关 data.call(vm,vm) 的问题 您回答说是跟this有关 其实我还不是很明白 不知能否这样去理解

如果data只是返回简单的对象(比如下面这种) 那么 data.call(vm,vm)和 new data()实际上的确没什么区别

let a = {}
let b = function() {
  return {
    name: 'nancy'
  }
}
let c = b.call(a)

后来我想到之前老师的实战课程中曾经出现过一些骚操作 就是如果data里面有通过立即执行函数返回值的情况

let a = {
  _age: 18
}
let b = function() {
  return {
    name: 'nancy',
    age: (() => {
	    return this._age
    })
  }
}
let c = b.call(a)

这样子就只能通过call绑定作用域来取值了 我想 data.call(vm,vm) 就是专门这种情况服务的

不知我理解的对不对

写回答

2回答

ustbhuangyi

2018-09-24

因为 data 里是可以访问 this 的,比如说取 props 定义的变量,所以要考虑这种情况。

1
0

拉拉德玛西亚

2019-08-02

为啥有两个参数vm,一个不就行了吗

0
2
拉拉德玛西亚
回复
ustbhuangyi
谢谢老师
2019-08-03
共2条回复

Vue.js 源码深入解析 深入理解Vue实现原理

全方位讲解 Vue.js 源码,进阶高级工程师

4984 学习 · 1037 问题

查看课程