对象的view属性

用 for(key in data) 循环遍历对象(data)时,key会返回对象属性名,到达对象属性的最底层 key 会返回一个view,然后返回上一层,

而data.view则是key: data[key],当key到达最底层或重复时返回view时,,data.view也会返回完整的对象

function preorderTraversal(root){  //第一个root为data
        var traverseQueue = [];
        function genTraverseQueue(root) {
            var key;
            traverseQueue.push(root.view);
            for(key in root){
                console.log(root.view);

                console.log(key);

                if(key != 'view'){
                    if(root.hasOwnProperty(key)){  //JavaScript中hasOwnProperty函数方法是返回一个布尔值,指出一个对象是否具有指定名称的属性

                        genTraverseQueue(root[key]);
                    }
                }

            }
        }
        genTraverseQueue(root);
        //data第一次访问view的时候为undefined。删除第一个元素
        traverseQueue.shift();
        return traverseQueue;
        traverseQueue = null;
    }
function renderTree(data, parentElement){
  /*  var data = {
        'root': {
            'a': {
                'a1': {},
                'a2': {}
            },
            'b': {
                'b1': {
                    'b1.1': {},
                    'b1.2': {},
                    'b1.3': {
                        'b1.3.1': {}
                    }
                },
                'b2': {
                    'b2.1': {}
                }
            }
        }
    };
    */
    // };
    var key;
    var treeView;
    for(key in data){

        if(data.hasOwnProperty(key)){
            if(key != 'view'){
                treeView = document.createElement('div');
                treeView.className='child';
                treeView.innerHTML = key;
                parentElement.appendChild(treeView);
                data[key].view = treeView;
                data[key].view.setAttribute('data', key.toString());
                renderTree(data[key], treeView);
            }
        }
    }
}

  

原文地址:https://www.cnblogs.com/jgwz/p/6500813.html