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不会将其编译为对象。创建?可能的副本