将对象传递给 javascript 函数
Posted
技术标签:
【中文标题】将对象传递给 javascript 函数【英文标题】:Pass object to javascript function 【发布时间】:2011-12-07 13:12:21 【问题描述】:我最近在我的网站上玩弄 jQuery,而我对 javascript 的了解相当有限。我开始喜欢 jQuery 将变量传递给花括号内的 jQuery 函数的能力,如下所示:
$(somediv).animate(thisisone: 1, thisistwo: 2, thisisavar);
我想知道的是如何编写一个可以将项目传递到花括号内的 Javascript 函数?我知道你可以写这样的函数:
function someName(var1, var2, var3...)
但这不支持大括号?我也知道您可以不添加任何参数并执行此操作:
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");
但我也想传递外部变量而不是一整行字符串,如果这样有意义吗?
基本上,我想要一个可以传递变量的函数,如下所示:
function myFunction(neededcodehere)
//Some code here...
myFunction (var1, "Option 1", "Option 2", "Option 3", anothervar);
【问题讨论】:
FWIW、"Option 1", "Option 2", "Option 3"
和 var 1
不是有效的 JavaScript。
Wraith,我想指出的是,如果您传递预先声明的变量,您的函数将已经能够在没有任何特殊语法的情况下访问它们(只要它们没有嵌套在一些其他功能)。
嘿 Marlin,它们不会被预先声明,我写错了,它看起来像 myFunction("Title", "Option 1" : "option1name", "Option 2" : "option2name", true)
【参考方案1】:
“大括号”正在创建一个对象字面量,即它们创建一个对象。这是一个论点。
例子:
function someFunc(arg)
alert(arg.foo);
alert(arg.bar);
someFunc(foo: "This", bar: "works!");
也可以预先创建对象:
var someObject =
foo: "This",
bar: "works!"
;
someFunc(someObject);
我建议阅读MDN JavaScript Guide - Working with Objects。
【讨论】:
如果没有传递 foo 值,您知道如何设置默认值吗?这样someFunc(bar: "works!");
仍然会生成“This”和“works!”的警报
@Normajean 您创建一个具有相同属性的默认对象并与参数对象合并。请参阅下面的答案,因为 cmets 中的格式很差
这里是 MDN JS 指南的更新网址:developer.mozilla.org/en-US/docs/Web/JavaScript/Guide【参考方案2】:
回答 normajeans 关于设置默认值的问题。 创建一个具有相同属性的默认对象并与参数对象合并
如果使用 ES6:
function yourFunction(args)
let defaults = opt1: true, opt2: 'something';
let params = ...defaults, ...args; // right-most object overwrites
console.log(params.opt1);
使用 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);
【讨论】:
【参考方案3】:当您将花括号内的对象作为参数传递给具有一个参数的函数时,您将此对象分配给一个变量,在这种情况下该变量是参数
【讨论】:
【参考方案4】:function myFunction(arg)
alert(arg.var1 + ' ' + arg.var2 + ' ' + arg.var3);
myFunction ( var1: "Option 1", var2: "Option 2", var3: "Option 3" );
【讨论】:
对。 ...我厌倦了 JSON.parse() 我的对象文字。 ...它已经被解析了! ...哦!以上是关于将对象传递给 javascript 函数的主要内容,如果未能解决你的问题,请参考以下文章
Vaadin 12将对象传递给JavaScript的函数:不能编码类
如何将对象传递给 .handlebars 模板并在 javascript 代码块中使用它?