用子方法实现函数可以吗
Is it okay practice to have functions with sub methods?
这类东西在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()
简单地拉入一个包含所有道具的对象,但如果你只需要一个,你可以直接调用它。这种设置可以吗?
尽管这是绝对合法的,但我认为这是对子方法的错误使用。它混淆了函数和所述函数的返回值。
我想说的是,当您想为函数添加元数据时,才可以正确使用函数中的子方法。假设您想为函数设置一个类似文档的属性,或者是否希望对其进行模糊处理。然后可以设置函数的属性,而不是基础对象。
尽管您的使用可能会节省一些写作,但它会使阅读代码变得更加困难。你应该一直努力做到易读性,而不是写作。
一般来说,这可能不是一个好的做法:
调用: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
将等于函数的结果。
这看起来很有用,但使用它时会发生什么并不明显。
表达式props.color()
返回与类似的表达式props().color
相同的属性,但性能不同,因为后者还计算其他属性,然后丢弃这些属性。很容易在没有注意到的情况下滥用该功能,因此您应该考虑使用一种方法,使用该方法可以更清楚地显示代码中实际发生的情况。
相关文章:
- javascript从子方法调用父方法
- 函数调用方法有什么用
- JS对象文字中的方法和子方法
- 一种在应用.appendTo()方法时使用回调函数的方法
- Typescript从类的构造函数调用方法
- Javascript错误Object函数没有方法'url'
- 传单错误:对象函数没有方法'createIcon'在LayerGroup中创建自定义图标标记时
- javascript中是否存在可以合并多个对象的函数或方法
- 如何将包含猫鼬函数的方法与控制流框架(例如异步或 Step)一起使用
- 类型错误: 对象函数...没有方法“打开”
- 寻找重置“数学”函数的方法
- 从子方法访问父对象
- 如何创建函数式方法
- 如何从子方法调用父方法
- 带有构造函数和方法的 NodeJS 模块
- 从 javascript 执行代码隐藏函数/子 (VB.NET)
- ECMAscript 是否提供任何构造函数的方法?
- 带有构造函数的Javascript子方法/名称空间
- 用子方法实现函数可以吗
- 如何从子方法中分离父函数