Javascript,值类型作为参考
Javascript, value types as reference
我有一些需要传递值类型作为引用而不更改处理函数的情况。
-
示例数值类型(变量限制)
var limit = 0; // Need to be the reference type var multiCallback = new MultiCallback(limit, function(){}); for (element in myObject) { limit++; element.DoSomething(multiCallback.callback); } function MultiCallback(limit, func) { var calls = 0; function callback() { if (++calls == limit) { func(); } } return { callback : callback } }
-
可检查函数类型
var resizeCallback = function(){}; $(window).resize(resizeCallback); function showPage() { resizeCallback = resizePage(); } function showLoader() { resizeCallback = resizeLoader(); }
有没有解决方案
更改变量的值永远不会更新变量的先前值。
对于函数,您可以执行以下操作:
var current = function() { ... };
function resizeCallback() {
return current.apply(this, arguments);
}
// Updating current will work:
current = function() { ... something ... };
对于其他值(基元和对象),最接近的是传递对象:
var limit = {value: 0};
function MultiCallback(limit, func) {
....
if (limit.value == ++calls) ...
}
// Changing limit:
limit.value = 1;
javascript 中没有通过引用传递(调用者看不到分配参数)。您在函数示例中所做的是修改全局变量。
你可以用一个对象包装它,并且该对象的突变对调用方可见:
var limit = {
value: 0
};
相关文章:
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 如何在DOM元素上按类型构建此函数
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- YUI3 IO实用程序是否可以根据给定的内容类型标头值自动序列化数据
- Webpack/Rect:遵循egghead.io教程,但出现错误:您可能需要一个合适的加载程序来处理此文件类型
- 如何从querySelectorAll中获取按钮类型
- 如何在输入字段中的按钮的帮助下打开日历,该字段的类型为“=”;日期”;
- 相位器状态未捕获参考错误
- 如何将具有文本类型值的var放入jQuery函数中
- javascript解释器如何理解变量的数据类型
- 可变大小的JavaScript字符串如何成为基元类型
- AngularJS指令只识别双向绑定类型
- 在<输入类型=“;文件“/>
- 从查询字符串参数推断出正确的数据类型
- 未捕获的类型错误:无法读取属性'删除'的未定义
- 为什么不'我们在javascript中使用函数参数的数据类型
- Javascript 可选类型提示
- Javascript,值类型作为参考
- 轨道-“;对象值“;是属性“”的无效值;对象“;具有类型“;参考文献“;
- 离子类型与离子过滤器-棒 - 不能参考$scope