Con*_*ers 39 javascript function javascript-objects
我最近在我的网站上乱搞jQuery,而且我对Javascript的了解相当有限.我开始喜欢jQuery能够将变量传递给花括号内的jQuery函数,如下所示:
$(somediv).animate({thisisone: 1, thisistwo: 2}, thisisavar);
Run Code Online (Sandbox Code Playgroud)
我想知道的是我如何编写一个Javascript函数,我可以将项目传递到花括号内?我知道你可以编写这样的函数:
function someName(var1, var2, var3...) {
}
Run Code Online (Sandbox Code Playgroud)
但这不支持括号?我也知道你不能添加任何参数并执行此操作:
function accident() {
for( var i = 0; i < arguments.length; i++ ) {
alert("This accident was caused by " + arguments[i]);
}
}
accident("me","a car","alcohol","a tree that had no right to be in the path of my driving");
Run Code Online (Sandbox Code Playgroud)
但是我还想传递外部变量而不仅仅是整行字符串,如果这有意义的话?
基本上,我想要一个可以传递变量的函数,如下所示:
function myFunction(neededcodehere){
//Some code here...
}
myFunction (var1, {"Option 1", "Option 2", "Option 3"}, anothervar);
Run Code Online (Sandbox Code Playgroud)
Fel*_*ing 86
"大括号"正在制作一个对象文字,即它们创建一个对象.这是一个论点.
例:
function someFunc(arg) {
alert(arg.foo);
alert(arg.bar);
}
someFunc({foo: "This", bar: "works!"});
Run Code Online (Sandbox Code Playgroud)
也可以预先创建对象:
var someObject = {
foo: "This",
bar: "works!"
};
someFunc(someObject);
Run Code Online (Sandbox Code Playgroud)
我建议阅读MDN JavaScript指南 - 使用对象.
function myFunction(arg) {
alert(arg.var1 + ' ' + arg.var2 + ' ' + arg.var3);
}
myFunction ({ var1: "Option 1", var2: "Option 2", var3: "Option 3" });
Run Code Online (Sandbox Code Playgroud)
回答normajeans关于设置默认值的问题。创建具有相同属性的默认对象并与参数对象合并
如果使用 ES6:
function yourFunction(args){
let defaults = {opt1: true, opt2: 'something'};
let params = {...defaults, ...args}; // right-most object overwrites
console.log(params.opt1);
}
Run Code Online (Sandbox Code Playgroud)
使用 Object.assign(target, source) 的旧版浏览器:
function yourFunction(args){
var defaults = {opt1: true, opt2: 'something'};
var params = Object.assign(defaults, args) // args overwrites as it is source
console.log(params.opt1);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
166428 次 |
最近记录: |