2015-05-21 2 views
0

У меня есть код, подобный этому:Функция как свойство объектов прототипа в Javascript?

var thing = function (prop1, prop2, prop3) { 
    this.prop1 = prop1; 
    this.prop2 = prop2; 
    this.prop3 = prop3; 
}; 

function assignProp1() { 
    return 'value1'; //Function simplified for the question 
} 

function generateThing() { 
    return new thing(function() {return assignProp1();}, 'value2', 'value3'); 
} 

То, что я хочу сделать, это создать различные объекты из Protoype «вещь». Но код вместо того, чтобы принимать значение «value1» в качестве prop1, возвращает «generateThing/<()» как prop1. Я не понимаю, почему он не работает.

+3

заменить 'функция() {RETU rn assignProp1();} 'с' assignProp1() ' – basilikum

+0

Ваш код должен работать нормально, что вы ожидали от него точно? – skazska

ответ

0
var thing = function (prop1, prop2, prop3) { 
    this.prop1 = prop1; 
    this.prop2 = prop2; 
    this.prop3 = prop3; 
}; 

function assignProp1() { 
    return 'value1'; //Function simplified for the question 
} 

function generateThing() { 
    return new thing(assignProp1(), 'value2', 'value3'); 
} 
+0

Я был уверен, что попробовал это, но да, теперь это работает. – MeisterAbababa

0

Если попытаться создать объект, где prop1 является функцией, возвращающегося «value1» ваш код должен работать нормально. Если вы хотите объект с prop1 = «значение1» - первый ответ хорош для вас

Теперь, если вы добавите

thing1 = generateThing(); 
console.log(thing1.prop1()); 

вы увидите «value1» в консоли

вот фрагмент:

var thing = function (prop1, prop2, prop3) { 
 
    this.prop1 = prop1; 
 
    this.prop2 = prop2; 
 
    this.prop3 = prop3; 
 
}; 
 

 
function assignProp1() { 
 
    return 'value1'; //Function simplified for the question 
 
} 
 

 
function generateThing() { 
 
    return new thing(function() {return assignProp1();}, 'value2', 'value3'); 
 
} 
 

 
thing1 = generateThing() 
 

 
$("#out").text(thing1.prop1())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
 
<span id="out"> </out>

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