我正在试图弄清楚如何制作一些将对象作为参数并返回和对象的代码。我理解如何返回字符串和数组,但我不太明白如何返回对象或将它们作为参数。一个小例子真棒!
(的修改) 对不起,如果我是模糊的。我明白语法是一样的。我实际上很难理解它。如何(或为什么)要返回对象或将对象作为参数。 我通过代码讲述一个故事,我试图弄清楚如何(通过控制台)输出返回对象的结果。我只是不明白你的实际情况。
答案 0 :(得分:3)
function helloObj(obj){
var newobj = {};
newobj.name = "Hello "+ obj.name;
return newobj;
}
var user = {name:"Peter"};
console.log( helloObj(user).name );
答案 1 :(得分:2)
简单,就像普通变量一样
function example(yourObject) {
var newObject={};
newObject.title = yourObject.title;
newObject.name="testing123";
return newObject;
}
答案 2 :(得分: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
返回的值为测试中的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());