返回函数内创建的对象的Javascript
我是javascript新手,在研究了javascript的作用域和垃圾收集之后,我仍然不确定什么是正确的方法 我想要一个函数,它的任务是创建一个具有特定属性的对象并返回它。我担心的是,在函数中创建的对象是否会超出范围并被转储。那么基本上,以下哪一项更好,或者两者都错了返回函数内创建的对象的Javascript,javascript,garbage-collection,Javascript,Garbage Collection,我是javascript新手,在研究了javascript的作用域和垃圾收集之后,我仍然不确定什么是正确的方法 我想要一个函数,它的任务是创建一个具有特定属性的对象并返回它。我担心的是,在函数中创建的对象是否会超出范围并被转储。那么基本上,以下哪一项更好,或者两者都错了 function createObject() { var obj = new MyObject(); // set some object properties here
function createObject() {
var obj = new MyObject();
// set some object properties here
return obj;
}
function createObject2(object) {
// set properties of the input object here
}
我会这样调用我的函数:
myOjbect = createObject();
myOjbect2 = new MyObject();
createObject2(myObject2);
基本上我更喜欢第一种方法,但是我是否需要担心垃圾收集,是否最好将对象的引用传递到函数中,而不是在函数本身中创建对象
基本上我更喜欢第一种方式,但我会担心垃圾收集吗
不,当你这样做的时候
myOjbect = createObject();
然后myOjbect
引用函数内部创建的对象。只要这个变量“存在”并保持对对象的引用,它就不会被垃圾收集
基本上我更喜欢第一种方式,但我会担心垃圾收集吗
不,当你这样做的时候
myOjbect = createObject();
然后
myOjbect
引用函数内部创建的对象。只要这个变量“存在”并保留对对象的引用,它就不会被垃圾收集。第一个更好。您可以在函数中设置所需的一切。如果返回,它将在调用范围内可用
var createObj = function(name) {
var age = 13;
var hidden = "hello";
return {
age : age, //you can refer a var from this function
name : name, //you can use params
gender : "male" //you can set new properties
};
}
var myObj1 = createObj("Penguinator");
console.log(myObj1.name);
//Will output --> Penguinator
console.log(myObj1.age);
//Will output --> 13
console.log(myObj1.male);
//Will output --> "male"
console.log(myObj1.hidden);
//Will output --> undefined <<-- you can't access this var
var createObj=函数(名称){
年龄=13岁;
var hidden=“你好”;
返回{
age:age,//您可以从这个函数中引用一个变量
name:name,//您可以使用params
性别:“男性”//您可以设置新属性
};
}
var myObj1=createObj(“企鹅”);
console.log(myObj1.name);
//将输出-->计数器
console.log(myObj1.age);
//将输出-->13
console.log(myObj1.male);
//将输出-->“男性”
console.log(myObj1.hidden);
//将输出-->未定义第一个更好。您可以在函数中设置所需的一切。如果返回,它将在调用范围内可用
var createObj = function(name) {
var age = 13;
var hidden = "hello";
return {
age : age, //you can refer a var from this function
name : name, //you can use params
gender : "male" //you can set new properties
};
}
var myObj1 = createObj("Penguinator");
console.log(myObj1.name);
//Will output --> Penguinator
console.log(myObj1.age);
//Will output --> 13
console.log(myObj1.male);
//Will output --> "male"
console.log(myObj1.hidden);
//Will output --> undefined <<-- you can't access this var
var createObj=函数(名称){
年龄=13岁;
var hidden=“你好”;
返回{
age:age,//您可以从这个函数中引用一个变量
name:name,//您可以使用params
性别:“男性”//您可以设置新属性
};
}
var myObj1=createObj(“企鹅”);
console.log(myObj1.name);
//将输出-->计数器
console.log(myObj1.age);
//将输出-->13
console.log(myObj1.male);
//将输出-->“男性”
console.log(myObj1.hidden);
//将输出-->javascript中未定义的垃圾收集仅在断开对对象的所有引用时发生。javascript中的垃圾收集仅在断开对对象的所有引用时发生。我认为Penguinator不打算在createObj中创建新对象。看起来他想修改一个自定义对象MyObject
我不认为Penguinator打算在createObj中创建新对象。看起来他想修改一个自定义对象<代码>我的对象