claster, вынеси определение
bg выше вызова
user_obj.bg.call(div);. А все дело в том, что функции могут объявляться как
Statement и как
Declaration.
Чтобы увидеть разницу, попробуй так:
a();// работает
function a() {
alert(1);
}
a();// не работает
var a = function() {
alert(1);
}
Поэтому вот это работает:
function UserObject() {
this.color = 'blue';
return true;
}
UserObject.prototype.bg = function() {
this.style.backgroundColor = 'red';
return true;
}
var div = document.createElement("DIV")
div.style.cssText = "width:100px;height:100px;border :1px solid blue;"
document.body.appendChild(div);
var user_obj = new UserObject();
user_obj.bg.call(div); // $1
И даже это работает (сам UserObject описан ниже всех, но он является декларацией, а не стейтментом):
UserObject.prototype.bg = function() {
this.style.backgroundColor = 'red';
return true;
}
var div = document.createElement("DIV")
div.style.cssText = "width:100px;height:100px;border :1px solid blue;"
document.body.appendChild(div);
var user_obj = new UserObject();
user_obj.bg.call(div); // $1
function UserObject() {
this.color = 'blue';
return true;
}
Но, в твоем случае - нет.