将函数嵌入到对象中更干净

时间:2016-12-06 17:27:27

标签: javascript

我成功嵌套了对象,例如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相同的东西?

1 个答案:

答案 0 :(得分: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功能,您可以通过添加此脚本来使用此polyfill(添加对所有浏览器的支持)