You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在嵌套函数中访问Vue实例的data属性(无法使用箭头函数场景)

问题原因及解决方案

你现有代码存在两个核心问题:

  • this指向错误
    普通函数的this遵循运行时绑定规则,then方法传入的普通回调函数执行时,内部this并不会指向Vue实例,默认绑定到全局对象(严格模式下为undefined),因此this.a操作的并不是Vue的data属性a。
    无法使用箭头函数的场景下,可以在myFunc作用域顶部提前缓存Vue实例的指向:
myFunc(){
   // 缓存当前Vue实例指向
   const vm = this;
   new Promise(function(resolve,reject){
    setTimeout(function(){
      resolve();
     },1000)
    })
   .then(function(){
      // 用缓存的实例修改data属性
      vm.a = 10;
      // 需要读取更新后的值请放在回调内部
      console.log(vm.a)
    });
}
  • 异步执行时序问题
    Promise.then回调属于异步微任务,包裹的setTimeout属于异步宏任务,二者都会晚于同步代码执行。你现有代码中console.log(this.a)是同步执行语句,运行时回调还未触发,a尚未被赋值,无论指向是否正确都无法读取到更新后的值,需要读取更新后的值时请将日志代码放在then回调内部。

内容的提问来源于stack exchange,提问作者Osman Rafi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 11:24:02