2013-07-28 224 views
-1
function render() { 
    requestAnimationFrame(render); 
    renderer.render(scene, camera); 
    // cube animation 
    cube.rotation.x += 0.01; 
    cube.rotation.y += 0.05; 
} 

// call render function to render cube 

render().cube.rotation.x += 0.9; 

我想訪問函數外的cube.rotation。這可能嗎?修改JavaScript對象屬性?

+4

立方體聲明在哪裏? – mohkhan

+0

閱讀錯誤信息。注意:1)在函數內部,'cube'會引發一個ReferenceError和2)函數調用('render()')返回'undefined'(或者,如果它運行的話)。 – user2246674

+0

是的 - 在你提供的代碼中,你不能從函數內部訪問多維數據集,因爲它不存在。 –

回答

1

是的,只要cube在範圍內就可以。例如:

(function(){ 
    var cube = {rotation: {x: 0, y: 0}}; 

    function render() { 
     cube.rotation.x += 0.01; 
     cube.rotation.y += 0.05; 
    } 

    render(); 

    cube.rotation.x += 0.9; // Valid 
})(); 

cube.rotation.x += 0.9; // NOT Valid 

如果您需要全局公開多維數據集,請創建一個全局名稱空間。在cube聲明的地方做:

var cube = ...; 
... 
var NAMESPACE = window.NAMESPACE = window.NAMESPACE || {}; 
NAMESPACE.cube = cube; 

然後你就可以在任何地方訪問使用立方體:

window.NAMESPACE.cube.rotation.x += 0.9; 

替換NAMESPACE與您的命名空間的實際名稱。