当你在JavaScript中调用函数而你错过了传递一些参数时,没有任何反应.
这使代码更难调试,所以我想改变这种行为.
我已经看到 如何最好地确定一个参数是否没有发送到JavaScript函数, 但我想要一个具有恒定数量的类型代码行的解决方案; 没有为每个功能键入额外的代码.
我已经考虑过通过修改("first-class")Function对象的构造函数,自动为所有函数的代码添加前缀.
受JavaScript中的更改构造函数的启发 我首先测试了是否可以更改Function对象的构造函数,如下所示:
function Function2 () {
this.color = "white";
}
Function.prototype = new Function2();
f = new Function();
alert(f.color);
Run Code Online (Sandbox Code Playgroud)
但它警告"未定义"而不是"白色",所以它不起作用,所以我没有进一步探索这种技术.
你知道任何级别的这个问题的解决方案吗?破解JavaScript的内容是可以的,但是关于如何找到缺少的参数的任何其他实用技巧也是可以的.
jba*_*bey 10
如果你的函数需要传递某些参数,你应该特别检查这些参数作为函数验证的一部分.
扩展Function对象并不是最好的主意,因为许多库依赖于未传递的默认参数的行为(例如jQuery没有将任何内容传递给它的作用域undefined变量).
我倾向于使用两种方法:
1)函数需要参数才能工作
var foo = function (requiredParam) {
if (typeof requiredParam === 'undefined') {
throw new Error('You must pass requiredParam to function Foo!');
}
// solve world hunger here
};
Run Code Online (Sandbox Code Playgroud)
2)一个参数没有通过,但可以默认为某些东西(使用jQuery)
var foo = function (argumentObject) {
argumentObject = $.extend({
someArgument1: 'defaultValue1',
someArgument2: 'defaultValue2'
}, argumentObject || {});
// save the world from alien invaders here
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3207 次 |
| 最近记录: |