2015-01-09 50 views
0

我知道我已經過分複雜化了,但我很好奇。在不調用函數的情況下,從函數中設置一個javascript對象的值

所以我有一個功能:

var setSize = function(selectedSize){ 
    var split = { 
     size: val.sizes.split(','), 
     tcin: val.tcin.split(','), 
     idx: function(){ 
     return this.size.indexOf(selectedSize); 
     } 
    }; 
    console.log(split.idx) 
    } 

HTML:

<p>choose a size</p> 
<div onClick="setSize('small')>small</div> 

問題:

這可能有split.idx有發言權的價值0不是函數的值。

+0

只需更換一個零的功能?你試過了嗎? – adeneo 2015-01-09 20:27:35

+0

對不起,我可以重新構建這個問題。它更像是來自用戶的selectedSize。所以split.idx會改變價值。 – 2015-01-09 20:29:00

+0

'idx:(selectedSize?function(){ return this.size.indexOf(selectedSize); }:0)' – Mouser 2015-01-09 20:32:23

回答

2

在現代瀏覽器中,您可以使用idx屬性的吸氣劑,以使其成爲計算屬性。

程序員將以split.idx的身份訪問它,但該值仍將由函數計算。

詳細放在這裏干將:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

var setSize = function(selectedSize){ 
    var split = { 
     size: val.sizes.split(','), 
     tcin: val.tcin.split(','), 
     get idx() { 
     return this.size.indexOf(selectedSize); 
     } 
    }; 
    console.log(split.idx) 
    } 
相關問題