1

livescript中,我们可以使用^^来克隆一个对象。

例如,

consloe.log (^^{a:1})

将被编译为

// Generated by LiveScript 1.2.0
(function(){
  console.log(clone$({
    a: 1
  }));
  function clone$(it){
    function fun(){} fun.prototype = it;
    return new fun;
  }
}).call(this);

但是,这些代码在浏览器中可以成功运行,但在 node.js 中却不行。

  • fun {a: 1}在浏览器中,它在控制台中打印。
  • 在 node.js 中,它什么也没显示。

什么原因?

4

1 回答 1

3

默认情况下不打印原型的属性。运算符将^^操作数设置为新对象的原型。这些属性仍然可以访问,但不会被打印出来console.log,也不会被序列化为 JSON。

如果您只是想复制属性,请使用{} <<< obj.

于 2014-01-15T04:52:15.840 回答