2015-06-09 3 views
1

Я пытался создать экземпляр объекта внутри, как следующее:Создать экземпляр объекта внутри

var oo = function(){ 
    return new func(); 
} 

var func = function(){ 
    this.name; 
    this.age; 
}; 

func.prototype = { 
    setData: function(name, age){ 
     this.name = name; 
     this.age = age; 
    }, 
    getData: function(){ 
     return this.name + " " + this.age; 
    } 
} 

При использовании, я получил сообщение об ошибке oo.setData is not a function.

oo.setData("jack", 15); 
console.log(oo.getData()); 

Что не так в моем коде?

+1

Попробуйте 'оо(). УстановитьДанные («гнездо», 15)' –

+0

потому что оо не является экземпляром FUNC, его просто функция, которая будет возвращать экземпляр FUNC, вы пытаетесь сделать наследование? –

+0

@wZVanG: сообщение об ошибке исчезло, но функция 'getData' возвращает' undefined' данные. –

ответ

2

Это происходит потому, что оо не является «func», оо возвращает новый func. Вы можете установить данные, используя

oo().setData('jack',15); 

Но тогда у вас нет доступа к нему.

Вы также можете использовать

var newfunc = oo(); 
newfunc.setData('jack',15); 
newfunc.getData(); 
+0

Фактически оо _is_ функция. –

+0

это функция, но не «func» - это то, для чего вы создали прототип. – userbd

1

oo функция для создания объекта.

var oo = function(){ //the oo variable is used to create func() objects 
    return new func(); 
} 

var func = function(){ //function 
    this.name; 
    this.age; 
}; 

func.prototype = { //define properties to func 
    setData: function(name, age){ 
     this.name = name; 
     this.age = age; 
    }, 
    getData: function(){ 
     return this.name + " " + this.age; 
    } 
} 

//create instance 
var myObject = oo(); 
//or 
var myObject = new func(); 

//Use 
myObject.setData("jack", 12); 

//Get a property 
console.log(myObject.getData()) 
+0

Спасибо за ответ. –

Смежные вопросы