2014-01-06 46 views
1

livescript中,我們可以使用^^克隆一個對象。Livescript的克隆操作符^^在服務器端不工作(node.js)

例如,

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中,它什麼也沒有顯示。

是什麼原因?

+1

我試圖在瀏覽器和node.js中測試這個,每當我將_proto_設置爲{a:1}時得到一個空對象{}。即使通過查看生成的腳本和livescript網站:^^只克隆原型而不是hasOwnProperty(s)。您可能想要查看可能執行您想要的任務的<<<操作符。 –

+0

@Nitin ...發佈作爲答案:)。 – Ven

+0

Livescript不會將它編譯爲Object.create? – Bergi

回答

3

默認情況下不打印原型的屬性。 ^^操作符將操作數設置爲新對象的原型。這些屬性仍然可以訪問,但不會被console.log打印,並且不會被序列化爲JSON。

如果您只是想複製屬性,請使用{} <<< obj