2016-12-06 101 views
2

我successed嵌套對象如A.巢功能成對象更乾淨

var A = {}; 
    A.dog = function(){ 
    console.log("LOVE HUMAN"); 
    } 
    A.dog.say = function(){ 
    console.log("Woof woof!!"); 
    } 
    A.dog.favorite = {}; 
    A.dog.favorite.meat = function(){}; 

    A.dog(); 
    A.dog.say(); 

    >>console: LOVE HUMAN 
      Woof woof!! 

下,我試圖寫像B對象爲乾淨。

var B = { 
    dog:function(){ 
     console.log("LOVE HUMAN"); 
     }, 
    dog:{ 
     say:function(){ 
     console.log("Woof woof!!"); 
     }, 
     favorite:{ 
     meat:function(){} 
     } 
    } 
}; 

    A.dog(); 
    A.dog.say(); 

>>console: TypeError: B.dog is not a function 

但我由於寫作的方式失敗。 B的寫作風格如何能夠實現與A相同的事物?

回答

4

您需要使用Object.assign

var B = { 
    dog: Object.assign(
    function() { 
     console.log("LOVE HUMAN"); 
    }, { 
     say: function() { 
     console.log("Woof woof!!"); 
     }, 
     favorite:{ 
     meat: function() {} 
     }, 
    } 
), 
}; 

B.dog(); B.dog.say();兩者都會工作。

注:Object.assign是一個ES6 JavaScript的特徵u可以使用此polyfill(增加了支持所有瀏覽器)加入該腳本

+1

它的工作原理!謝謝回答。 – sheep02