簡體   English   中英

將 object 傳遞給 javascript function

[英]Pass object to javascript function

我最近在我的網站上搞亂了 jQuery,我對 Javascript 的了解相當有限。 我開始喜歡花括號內的 jQuery 將變量傳遞給 jQuery function 的能力,如下所示:

$(somediv).animate({thisisone: 1, thisistwo: 2}, thisisavar);

我想知道的是如何編寫一個 Javascript function 可以將項目傳遞到花括號內? 我知道你可以寫這樣的函數:

function someName(var1, var2, var3...) {

}

但這不支持大括號? 我也知道您可以不添加 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");

但我也想傳遞外部變量而不僅僅是一整行字符串,如果這有意義的話?

基本上,我想要一個 function ,我可以將變量傳遞給,如下所示:

function myFunction(neededcodehere){
    //Some code here...
}

myFunction (var1, {"Option 1", "Option 2", "Option 3"}, anothervar);

“大括號”正在制作一個對象文字,即它們創建一個對象。 這是一個論點。

例子:

function someFunc(arg) {
    alert(arg.foo);
    alert(arg.bar);
}

someFunc({foo: "This", bar: "works!"});

對象也可以預先創建:

var someObject = {
    foo: "This", 
    bar: "works!"
};

someFunc(someObject);

我建議閱讀MDN JavaScript 指南- 使用對象

function myFunction(arg) {
    alert(arg.var1 + ' ' + arg.var2 + ' ' + arg.var3);
}

myFunction ({ var1: "Option 1", var2: "Option 2", var3: "Option 3" });

當您將花括號內的對象作為參數傳遞給帶有一個參數的函數時,您將這個對象分配給一個變量,在這種情況下,該變量就是參數

回答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);
    }

我的美分。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM