Javascript watch.js快疯了

Javascript watch.js快疯了,javascript,object,Javascript,Object,使用的浏览器端版本 在html标题中: <script type="text/javascript" src="S/watch.js"></script> 我一遍又一遍地发现这个错误: 未捕获类型错误:无法读取未定义的watch.js:345的属性“未定义” 错误显示来自此处-watch.js代码: var loop = function(){ for(var i in lengthsubjects){ var subj =

使用的浏览器端版本

在html标题中:

<script type="text/javascript" src="S/watch.js"></script>
我一遍又一遍地发现这个错误:

未捕获类型错误:无法读取未定义的watch.js:345的属性“未定义”

错误显示来自此处-watch.js代码:

var loop = function(){

        for(var i in lengthsubjects){

            var subj = lengthsubjects[i];
            var difference = getObjDiff(subj.obj[subj.prop], subj.actual);   <-watch.js:345
var循环=函数(){
for(长度主题中的var i){
var sub=长度受试者[i];
变量差异=getObjDiff(sub.obj[sub.prop],sub.actual);已修复!

在循环函数中,将所有内容包装在此

if(lengthsubjects.length!==0){}
因为如果您使用console.dir(lengthsubjects)

你会得到:

length: 0,
__proto__: Array[0]
下面是watch.js中第340-360行的变化:

var loop = function(){
    if(lengthsubjects.length!==0){
    for(var i in lengthsubjects){
        //
        var subj = lengthsubjects[i];
        var difference = getObjDiff(subj.obj[subj.prop], subj.actual);

        if(difference.added.length || difference.removed.length){
            if(difference.added.length){
                for(var j in subj.obj.watchers[subj.prop]){
                    watchMany(subj.obj[subj.prop], difference.added, subj.obj.watchers[subj.prop][j], subj.level - 1, true);
                }
            }

            callWatchers(subj.obj, subj.prop, "differentattr", difference, subj.actual);
        }
        subj.actual = clone(subj.obj[subj.prop]);

    }

    }
};

您使用的浏览器是什么?google chrome版本30.0.1599.10 devYour
这里的
var是JSON符号。为了符合标准,您应该使用
而不是
。不知道这是否会影响
watch.js
库,但值得一试,我想说……谢谢,我不知道……(虽然没有错误更改)@Joum你从哪里得到的?他们之间完全没有区别。
var loop = function(){
    if(lengthsubjects.length!==0){
    for(var i in lengthsubjects){
        //
        var subj = lengthsubjects[i];
        var difference = getObjDiff(subj.obj[subj.prop], subj.actual);

        if(difference.added.length || difference.removed.length){
            if(difference.added.length){
                for(var j in subj.obj.watchers[subj.prop]){
                    watchMany(subj.obj[subj.prop], difference.added, subj.obj.watchers[subj.prop][j], subj.level - 1, true);
                }
            }

            callWatchers(subj.obj, subj.prop, "differentattr", difference, subj.actual);
        }
        subj.actual = clone(subj.obj[subj.prop]);

    }

    }
};