Javascript Livescript';s克隆运算符^^^不';t在服务器端工作(node.js)

Javascript Livescript';s克隆运算符^^^不';t在服务器端工作(node.js),javascript,node.js,livescript,Javascript,Node.js,Livescript,在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); 但是

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中,它没有显示任何内容

原因是什么?

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


如果您只是想复制属性,请使用
{}我已经尝试在browser和node.js中测试过,每次我得到一个proto设置为{a:1}的空对象{}。即使查看生成的脚本和livescript网站:^^也只克隆原型,而不克隆hasOwnProperty。您可能想查看@Nitin。。。将其作为答案发布:)。Livescript不会将其编译为
对象。创建
?可能的副本