0

我试图弄清楚如何编写一些将对象作为参数并返回对象的代码。我了解如何返回字符串和数组,但我不太了解如何返回对象或将它们作为参数。一个小例子会很棒!

编辑)对不起,如果我含糊其辞。我知道语法是一样的。我只是无法实际理解它。您希望如何(或为什么)返回一个对象或将一个对象作为参数。我正在通过代码讲述一个故事,并且试图弄清楚如何(通过控制台)输出返回对象的结果。我只是不明白你实际上是怎么做到的。

4

3 回答 3

3
function helloObj(obj){
  var newobj = {};
  newobj.name = "Hello "+ obj.name;
  return newobj;
}

var user = {name:"Peter"};
console.log( helloObj(user).name  );
于 2013-06-20T05:20:07.773 回答
2

简单,就像普通变量一样

function example(yourObject) {
    var newObject={};
    newObject.title = yourObject.title;
    newObject.name="testing123";
    return newObject;
}
于 2013-06-20T05:19:23.390 回答
2

将对象传递给函数可能很棘手,JavaScript 通过引用传递对象,这意味着当您更改函数中的对象时,它将在函数完成后更改:

function sortmyarray(arr){
  arr.sort();
}
function test(){
 var arr=[3,2,1];
 sortmyarray(arr);
 console.log(arr);//[1,2,3]
}
test();

这仅在您调用更改对象的函数时有效,分配新值不起作用:

function sortmyarray(arr){
  arr=[1,2,3];
}
function test(){
 var arr=[3,2,1];
 sortmyarray(arr);
 console.log(arr);//[3,2,1]
}
test();

但是您可以通过从 sortmyarray 返回的值在 test 中为 arr 重新分配一个值

function sortmyarray(arr){
  return "hello world";
}
function test(){
 var arr=[3,2,1];
 arr=sortmyarray(arr);
 console.log(arr);//"hello world"
}
test();

至于为什么将对象传递给函数;这样你就可以重用代码了,这里是一个被重用的排序函数:

var myObj={
 toString:function(){
  var ret=[];i=0;
  for(i=0;i<this.arr.length;i++){
   ret.push(this.arr[i].col1);
   ret.push("\t");
   ret.push(this.arr[i].col2);
   ret.push("\n");
  }
  return ret.join("");
 },
 arr:[
  {col1:99,col2:1},
  {col1:1,col2:3},
  {col1:3,col2:1},
  {col1:1,col2:99}
 ]
}

function sortmyarray(arr, byColNames){
  var len=byColNames.length;
  arr.sort(function(a,b){
    var i=0;
    while(a[byColNames[i]]===b[byColNames[i]]
      && i<len){
      i++;
    }
    if(i===len){
     return 0;
    }
    return(a[byColNames[i]]>b[byColNames[i]])?1:-1;
  });
}
sortmyarray(myObj.arr,["col2"])
console.log(myObj.toString());
sortmyarray(myObj.arr,["col2","col1"]);
console.log(myObj.toString());
sortmyarray(myObj.arr,["col1","col2"]);
console.log(myObj.toString());
于 2013-06-20T05:53:19.680 回答