2015-09-27 82 views
1

声明与函数对象属性的对象obj,我可以定义下面两行语句我可以在一个声明中

var obj ={} //this is an object 
    obj.isShiny = function() { 
     console.log(this); 
     return "you bet1"; 
    }; 

为一个行语句

var obj={ 
     isShiny : function() { 
      console.log(this); 
      return "you bet1"; 
     } 
}; 

对于函数func用两行表述如下

var func = function() {console.log(this)}; //this is a function 
    func.isShiny = function() { 
     console.log(this); 
     return "you bet1"; 
    }; 

是否有可能将它合并为单行声明?

+1

把它包在IIFE。 –

回答

1

是否有可能将它合并到单行语句中?

不是你的意思,没有。

你可以从字面上在一行,但不是在一个语句/表达式中。

你可能只是一个声明/表达,但我无法想象这就是你的意思:

var func = (function() { 
    function func() { 
     console.log(this); 
    } 
    func.isShiny = function() { 
     console.log(this); 
     return "you bet1"; 
    }; 
    return func; 
})(); 

有一点呼吁,也许如果你有在东西来填补,你只有一个表达式可以填充(可能作为更大对象上属性初始值设定项的一部分)。

1

是,使用Object.assign

var func = Object.assign(
    function() {console.log(this)}, 
    { 
     isShiny: function() { 
     console.log(this); 
     return "you bet1"; 
     } 
    } 
); 
0

这里是另一个答案:)

if (typeof Function.prototype.method !== "function") { 
      Function.prototype.method = function (name, implementation) { 
       this[name] = implementation; 
       return this; 
      }; 
     } 


     var func = 
       function() {console.log(this)}.method 
       ("isShiny",function() { 
        console.log(this); 
        return "you bet1"; 
       });//this is a function 


     console.log(func.isShiny()); 
相关问题