DMQ / mvvm

剖析vue实现原理,自己动手实现mvvm
5.21k stars 1.26k forks source link

在observer.js中 您重写了默认的Observer.prototype 那么this.walk(data) 还能正确的找到walk这个方法吗 #26

Open blinkMyEyesConsciously opened 6 years ago

blinkMyEyesConsciously commented 6 years ago

var Observer = function Observer (value) { this.value = value; this.dep = new Dep(); this.vmCount = 0; def(value, 'ob', this); if (Array.isArray(value)) { var augment = hasProto ? protoAugment : copyAugment; augment(value, arrayMethods, arrayKeys); this.observeArray(value); } else { this.walk(value); } };

Observer.prototype.walk = function walk (obj) {
    var keys = Object.keys(obj);
    for (var i = 0; i < keys.length; i++) {
        defineReactive(obj, keys[i]);
    }
};

这是尤大的写法 你是直接用字面量的方式进行重写 在学习你的代码的过程中发现按照你的写法显示walk 为定义

DMQ commented 5 years ago

@blinkMyEyesConsciously 有具体的代码例子吗?这里的代码应该是没问题的