[英]Pass object to javascript function
I have recently been messing around with jQuery on my website, and I have a fairly limited knowledge of Javascript.我最近在我的网站上搞乱了 jQuery,我对 Javascript 的了解相当有限。 I am beginning to like the jQuery ability to pass variables to a jQuery function inside the curly braces, like so:
我开始喜欢花括号内的 jQuery 将变量传递给 jQuery function 的能力,如下所示:
$(somediv).animate({thisisone: 1, thisistwo: 2}, thisisavar);
What I was wondering is how I can write a Javascript function that I can pass items to inside the curly braces?我想知道的是如何编写一个 Javascript function 可以将项目传递到花括号内? I know you can write functions like this:
我知道你可以写这样的函数:
function someName(var1, var2, var3...) {
}
but that doesn't support the braces?但这不支持大括号? I also know that you can add no arguments and do this:
我也知道您可以不添加 arguments 并执行以下操作:
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");
but I also want to pass outside variables instead of just a whole line of strings, if that makes sense?但我也想传递外部变量而不仅仅是一整行字符串,如果这有意义的话?
Basically, I want a function that I can pass variables to, like so:基本上,我想要一个 function ,我可以将变量传递给,如下所示:
function myFunction(neededcodehere){
//Some code here...
}
myFunction (var1, {"Option 1", "Option 2", "Option 3"}, anothervar);
The "braces" are making an object literal , ie they create an object. “大括号”正在制作一个对象文字,即它们创建一个对象。 It is one argument.
这是一个论点。
Example:例子:
function someFunc(arg) {
alert(arg.foo);
alert(arg.bar);
}
someFunc({foo: "This", bar: "works!"});
the object can be created beforehand as well:对象也可以预先创建:
var someObject = {
foo: "This",
bar: "works!"
};
someFunc(someObject);
I recommend to read the MDN JavaScript Guide - Working with Objects .我建议阅读MDN JavaScript 指南- 使用对象。
function myFunction(arg) {
alert(arg.var1 + ' ' + arg.var2 + ' ' + arg.var3);
}
myFunction ({ var1: "Option 1", var2: "Option 2", var3: "Option 3" });
当您将花括号内的对象作为参数传递给带有一个参数的函数时,您将这个对象分配给一个变量,在这种情况下,该变量就是参数
Answering normajeans' question about setting default value.回答normajeans关于设置默认值的问题。 Create a defaults object with same properties and merge with the arguments object
创建具有相同属性的默认对象并与参数对象合并
If using ES6:如果使用 ES6:
function yourFunction(args){
let defaults = {opt1: true, opt2: 'something'};
let params = {...defaults, ...args}; // right-most object overwrites
console.log(params.opt1);
}
Older Browsers using Object.assign(target, source):使用 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);
}
My cents.我的美分。
function readable(args) {
const {opt1, opt2, opt3} = args
console.log(opt1 + opt2 + opt3)
// => "My favorite things"
}
readable({
opt1: "My f"
, opt2: "avori"
, opt3: "te things"
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.