是否可以将对象作为参数传递?

时间:2015-06-01 02:14:19

标签: javascript jquery

var obj = {
  name1: 1,
  name2: 2
}

function myF(obj) {
  console.log(obj.name1) // by idea it must return 1
};
myF(obj)

有人知道如何在函数中传递对象吗?

2 个答案:

答案 0 :(得分:1)

是的对象是很好的参数。

var p1 = {
    name: "Tom",
    age: 23,
    isMale: true
};
var p2 = {
    name: "Alicia",
    age: 21,
    isMale: false
};
var p3 = {
    name: "Landon",
    age: 1,
    isMale: true
};


function greeting(person) {
    var str = '';
    str += 'Hello my name is ';
    str += person.name + ' '; 
    str += 'I'm a ' + person.age + ' year old ';
    if (person.isMale) {
        str += age > 18 ? 'man' : 'boy';
    } else {
        str += age > 18 ? 'woman' : 'girl';
    }
    if (person.age < 3) {
        str = 'Bah'
    }
    console.log(str);
};

greeting(p1); // 'Hello my name is Tom I'm a 23 year old man';
greeting(p2); // 'Hello my name is Alicia I'm a 21 year old woman;
greeting(p3); // 'Bah';

当你有一组属于一起的值并且你不想单独传递它们时,对象是有益的(如果它们属于一起,它们很少应该自己传递。)

答案 1 :(得分:0)

这是非常常见的做法。许多库将使用config对象,因此不必指定多个参数

示例:

function makeSquare(height, width, color, border)

可以更容易用

表示
function makeSquare(config)

这样可以让用户更容易省略一些参数,比如你想要没有边框的makeSquare,如果你传递和反对,你就不需要包含边框参数。

带参数

makeSquare(10, 20, red, null)

与Obj

config = {
  height: 10,
  width: 10,
  color: 'red'
};

makeSquare(config);

如果你有大量的配置选项,你可以看到这可以节省相当多的开发时间和空间