Vue面试题:如果data中的一个属性名和methods中的一个方法名相同,在不报错的情况下,先执行哪个?

去年面试的时候遇到的一个问题,面试官应该就是想知道你是否有了解过源码,那我们来看一下源码喽:

 function initState (vm) {
    vm._watchers = [];
    var opts = vm.$options;
    if (opts.props) { initProps(vm, opts.props); }
    if (opts.methods) { initMethods(vm, opts.methods); }
    if (opts.data) {
      initData(vm);
    } else {
      observe(vm._data = {}, true /* asRootData */);
    }
    if (opts.computed) { initComputed(vm, opts.computed); }
    if (opts.watch && opts.watch !== nativeWatch) {
      initWatch(vm, opts.watch);
    }
  }
以上为vue的部分源码,可以看出判断顺序:
props > methods > data > computed > watch

你可能感兴趣的:(Vue,面试,vue)