我可以在一个语句中使用函数对象声明属性

时间:2015-09-27 10:05:29

标签: javascript

对于对象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";
    };

是否可以将其合并为一行语句?

3 个答案:

答案 0 :(得分:1)

  

是否可以将其合并为一行语句?

不是你的意思,没有。

您可以在一行中完成,但不能在单个语句/表达式中完成。

你可以只有一个最外面的语句/表达,但我无法想象你的意思:

Id  Comments    Type
1    Work       Day
     Play       Afternoon
     Sleep      Night

对此有一点要求,也许如果你必须填写一些你只需填写一个表达式的东西(可能作为较大对象的属性初始值设定项的一部分)。

答案 1 :(得分:1)

是的,使用Object.assign

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

答案 2 :(得分: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());