Javascript返回在函数内创建的对象

时间:2014-01-28 07:58:16

标签: javascript garbage-collection

我是javascript的新手,在查看了javascript范围和垃圾收集后,我仍然不确定这样做的正确方法。

我想要一个函数,其作用是创建一个具有某些属性的对象并将其返回。我担心的是在函数中创建的对象是否超出范围并被转储。所以基本上哪个更好,或者它们都错了?

    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);

基本上我更喜欢第一种方式,但是我是否要担心垃圾收集?将对象的引用传递给函数而不是在函数本身中创建我的对象会更好吗?

2 个答案:

答案 0 :(得分:4)

  

基本上我更喜欢第一种方式,但我不得不担心垃圾收集

没有。当你这样做

myOjbect = createObject();

然后myOjbect引用在函数内创建的对象。只要这个变量“存在”并保持对该对象的引用,它就不会被垃圾收集。

答案 1 :(得分:0)

第一个更好。您可以在功能中设置所需的一切。如果你返回,它将在调用范围内可用。

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