TiL*_*gic 2 javascript arguments function
我是Javascript的新手(以及一般的编程),并且一直在寻找一种使用Javascript函数更改任意数量的aguments值的方法.
这里的答案(函数的JavaScript变量数量)非常有用.我能够用它来创建我需要的两个功能,但是我遇到了第三个功能.
基本上我想将一个可变数量的对象(原始的或更复杂的)传递给一个函数,并让函数改变每个对象的值.
var pants = true;
var house = true;
var hair = {/* lots of stuff */};
var onFire = function() {
for (var i = 0; i < arguments.length; i++) {
arguments[i] = false;
}
};
onFire(pants, house, hair);
Run Code Online (Sandbox Code Playgroud)
控制台输出:
>pants;
true
>house;
true
>hair;
Object
Run Code Online (Sandbox Code Playgroud)
我如何制定这个函数,结果如下:
>pants;
false
>house;
false
>hair;
false
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
编辑:
澄清事情 - 我正在尝试创建一个可重用的辅助函数,它可以更改传入的任何对象的值,false而不是键入:
var a1 = false;
var a2 = false;
...
var a+n = false;
Run Code Online (Sandbox Code Playgroud)
如果我使用mathec的方法 - 是否可以'解析' object以便它的属性覆盖同名的全局变量,或者我每次都明确地输入它?
var object = {
pants: {/* lots of stuff */},
house: {/* lots of stuff */},
hair: {/* lots of stuff */}
};
function modifyObject(obj) {
obj.pants = false;
obj.house = false;
obj.hair = false;
}
function someMagic(object){
// wand waves...
// rabbit exits hat....
}
Run Code Online (Sandbox Code Playgroud)
控制台输出:
>pants;
false
>house;
false
>hair;
false
Run Code Online (Sandbox Code Playgroud)
当您在JavaScript中传递变量时,如果它是一个对象,则将引用的副本传递给值,但如果它是一个基元(如真/假),则复制实际值.这基本上意味着,如果您传入一个对象并修改其中一个对象的属性,您将修改原始对象.但是如果你传入一个像true/false这样的原语,你只需修改副本,而不是原始值.因此,如果您的目标是修改原始值,则可以选择将这些值存储在对象中并传入对象.例如:
var object = {
pants: true,
house: true,
hair: {}
};
function modifyObject(obj) {
obj.pants = true;
obj.house = true;
obj.hair = true;
}
Run Code Online (Sandbox Code Playgroud)
如果你想修改任意数量的参数,请记住,如果你传入的是true/false,你就是要复制这些值.因此,如果您在函数内部更改它们,则不会修改原始值.
记住这一点的一种快速方法是,如果您传递了一个对象或一个数组,那么您正在修改实际对象.还有别的,你正在修改副本.
编辑
因此,从字面上解释你想做什么,你可以这样写:
var a = true,
b = true;
/* pass in variable names */
function makeFalse() {
var i, len;
for (i = 0, len = arguments.length; i < len; ++i) {
window[arguments[i]] = false;
}
}
makeFalse("a", "b");
Run Code Online (Sandbox Code Playgroud)
但我想不出有这么好的理由:-).我会使用配置对象来存储标志和状态变量,而不是全局变量.
| 归档时间: |
|
| 查看次数: |
453 次 |
| 最近记录: |