2016-12-06 52 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