这种东西适用于JavaScript
function main() {
return 1;
}
main.sub = function () {
return 2;
};
main(); // 1
main.sub(); // 2
似乎对做
之类的东西很有用function props() {
return { color: props.color(), size: props.size() };
}
props.color = function () {
// calculate and return color
};
props.size = function () {
// calculate and return size
};
这样您就可以使用prop()
轻松获取所有道具的对象,但如果您只需要一个,则可以直接调用它。这种设置好吗?
答案 0 :(得分:2)
即使它绝对合法,我也说它是子方法的错误利用。它将函数与所述函数的返回值混淆。
我想说在函数中正确使用子方法就是为函数添加元数据。让我们假设您要为文档中的函数设置属性,或者是否要对其进行模糊处理。然后,您可以设置函数的属性而不是基础对象。
即使您的使用可能会节省一些写作,但它使得阅读代码更加困难恕我直言。你应该始终努力方便阅读,而不是写作。
答案 1 :(得分:1)
这看起来很有用,但使用它时发生的情况并不是很明显。
表达式props.color()
返回与相似表达式props().color
相同的表达式,但性能不同,因为后者还计算其他属性,然后将其丢弃。在没有注意的情况下很容易滥用该功能,因此您应该考虑使用一种方法,其中使用情况更清楚地显示代码中实际发生的情况。
答案 2 :(得分:1)
一般来说,这可能不是一个好习惯:
致电:props.color();
将与调用props().color
完全相同。
什么是更好的模式将是如下:
var props = function() {
var theColor = function() {
// calculate the color
};
var theSize = function() {
// calculate the size
};
return {
color: theColor(),
size: theSize()
}
}
var someprops = new props();
你可以不用例如theColor()
作为颜色的对象,你可以把它留作函数:所以返回将是
return {
color: theColor,
size: theSize
}
区别在于props.color == "function"
而前一个例子中props.color
将等于函数的结果。