Может быть, вы хотите попробовать:
var balloon = function(){
};
balloon.prototype.iHeight = function(){ return document.getElementById("wrapper").clientHeight; }
Тогда вы можете позвонить позже, после загрузки DOM.
Вам это нужно в функции, потому что в противном случае JavaScript попытается вычислить значение во время определения.
window.onload = function(){
var oBalloon = new balloon();
var height = oBalloon.iHeight(); // iHeight would be undefined if you tried to calculate it earlier
}
Вы можете просто удалить метод-прототип и установить свойство в обработчике onload
:
window.onload = function(){
var oBalloon = new balloon();
oBalloon.iHeight = document.getElementById("wrapper").clientHeight;
}
Тогда вы должны установить его только один раз, но также гарантируете, что DOM будет загружен и свойство к тому времени будет действительным.
То, что вы имели, эквивалентно:
var balloon = function(){};
var tmp = document.getElementById("wrapper").clientHeight; // at this point, this is not definted: tmp = undefined
balloon.prototype.iHeight = tmp; // undefined
window.onload = function(){
var oBalloon = new balloon();
}