2015-04-13 7 views
0

Имеет ли код, действующий в JavaScript?Могу ли я создать новый объект в свойстве объекта на основе конструктора на одном объекте?

var model = { 
    var1: "",  
    var3: function() { 
     this.someval1=0;  
    }, 
    var4: new var3(),  
} 

Я знаю, что функция возвращает объект. Можно ли использовать объект типа var4? Приведенный выше код дает ошибку "var3 is undefined".

ответ

3

Нет, это не так. Однако следующее:

var model = { 
    var1: "",  
    var3: function() { 
     this.someval1=0;  
    }, 
} 
model.var4 = new model.var3(); 

Обратите внимание, что вы, скорее всего, что-то не так. Вы должны указать what you're trying to do, in addition to how you're trying to solve it.

+0

Я создавал несколько объектов, которые имеют почти одинаковые свойства, поэтому я создал функцию с общими свойствами и думал, что функция возвращает объект. –

6

var3 является собственностью на model, поэтому нет, это недействительно, если нет функции с именем var3, определенной в другом месте и находится в текущей области.

0

Кроме других опубликованных. Вы могли бы сделать что-то вроде этого:

var model = { 
    var1: "", 
    var3: (function() { 
     return window.var3 = function() { 
      this.someval1 = 0; 
     } 
    })(), 
    var4: new var3() 
} 
+0

Что делать, если OP также имеет переменную с именем 'var3' в глобальной области действия – bugwheels94

+0

@Ankit, тогда она становится переопределенной. ;) – rottenoats

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