指针在Javascript中如何工作?

时间:2018-07-28 19:55:07

标签: javascript object pointers

stumbled upon以下代码:

obj = {};  // global object

function set(path, value) {
    var schema = obj;  // a moving reference to internal objects within obj
    var pList = path.split('.');
    var len = pList.length;
    for(var i = 0; i < len-1; i++) {
        var elem = pList[i];
        if( !schema[elem] ) schema[elem] = {}
        schema = schema[elem];
    }

    schema[pList[len-1]] = value;
}

set('mongo.db.user', 'root');

我进一步阅读了一下,发现schema充当obj的指针。这是如何运作的?我什至重写了上面的代码以合并ES6:

console.log(set('mongo.db.user', 'root'));

function set(path, data = '', obj = {}, delim = '.') {
  if (path) {;
    path.split(delim).reduce((s, n, i, a) => {
      s.pointer[n] = s.pointer[n] || i === a.length - 1 ? data : {};
      s.pointer = s.pointer[n];
      return s;
    }, {pointer: obj});
  }
  return obj;
}

但是我对此感到难以接受,因为我看不到例如pointerobj怎么设置s.pointer[n]来设置对象,但是{ {1}}未设置/覆盖s.pointer = s.pointer[n]

如果有人可以解释一下那将是很棒的-如果我从更大的角度上缺少某些东西(因此也没问),请告诉我。

0 个答案:

没有答案