众所周知,在 JS 中,您可以在函数内部创建一个函数,如下所示:
function digit() { return 9 };
digit.five = function() { return 5 };
digit(); // 9
digit.five() // 5
我不知道这是否是一种不好的做法(可能是)——因为它可以正常工作,您可以使用它。
但是如果我们有一个 digit()
会怎样呢?作为某个对象的方法起作用(参见下面的示例)?
那我们怎么声明digit.five()
?假设我们要在 obj
的范围内声明它.
var obj = {
digit: function() { return 9 },
// digit.five: … ???
// digit["five"]: … ???
}
obj.digit(); // 9
obj.digit.five() // 5
有没有可能不创建新的 obj.digitFive()
方法?
附言:用户nnnnnn here says , 我们可以在 obj.digit()
中创建一个属性:
var obj = {
digit: function () {
return 9;
obj.digit.five = function () { return 5 };
}
}
这是唯一的方法吗?
最佳答案
没有内置语法可以将属性放在函数表达式上,没有。您可以在之后添加该属性:
var obj = {
digit: function() { return 9 },
};
obj.digit.five = function() { return 5 };
ES6 的标准函数 Object.assign
也能很好地工作:
var obj = {
digit: Object.assign(
function() { return 9 },
{ five: function() { return 5 } }
),
};
关于javascript - 创建一个函数的函数属性,它又是一个对象字面量的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34367091/