JavaScript从自定义对象访问元素

JavaScript从自定义对象访问元素,javascript,oop,Javascript,Oop,这一定是一个很愚蠢的问题,但我就是不能让它起作用 我正在为iOS创建自己的UIKit。(允许类似iPhone的界面的网站工具包) 但是,我正在尝试创建一个JavaScript库,它可以用来更改文档的几个元素。例如,在加载文档时设置自定义背景颜色 我正试图用面向对象的JavaScript实现这一点。像这样: var UI = new Interface(); UI.setBackground("#000"); 我怎样才能做到这一点? (因此,自定义“UI”对象,以及(示例)如何从对象内部更改文档

这一定是一个很愚蠢的问题,但我就是不能让它起作用

我正在为iOS创建自己的UIKit。(允许类似iPhone的界面的网站工具包)

但是,我正在尝试创建一个JavaScript库,它可以用来更改文档的几个元素。例如,在加载文档时设置自定义背景颜色

我正试图用面向对象的JavaScript实现这一点。像这样:

var UI = new Interface();
UI.setBackground("#000");
我怎样才能做到这一点?
(因此,自定义“UI”对象,以及(示例)如何从对象内部更改文档的背景色。)

您可以在JS对象中保存对DOM的引用,并根据需要重写它

function Interface() {
    this.setBackground = function (color) {
        this.pointTo.style.background = color;
    };
    this.pointTo = document.body;
}
您可以通过以下方式对此进行初始化:

var UI = new Interface();
UI.pointTo = document.getElementById('some_id');
UI.setBackground("#000");
// Set another style, on a different element
UI.pointTo = document.getElementById('some_other_id');
UI.setBackground("#FFF");
这是一个简单的实现,需要更智能地分配,但它应该可以完成这项工作

编辑:
在原始发布中出错,并修复了错误代码。还举了一个例子:

这里有一个非常简单的方法

// define the object
var Interface = function () {

    var interface = document.getElementById("interface"); // just an example

    // your new methods
    this.setBackground = function (color) {
        interface.style.backgroundColor = color;
    }

    // rest of your code
}
现在你可以利用它了

var UI = new Interface();
UI.setBackground("#000");

与silverstrike的代码类似,但您可以在接口构造函数中传递目标对象,以避免将来遇到麻烦

function Interface(target) {
    target = target || document.body;
    this.setBackground = function (color) {
        target.style.background = color || 'white';
    };
}
好的,现在您可以执行以下操作:

var UI = new Interface(document.body);
UI.setBackground("#000");
甚至在某些情况下,您正在应用
全局范围中的接口
!只有!:

var UI = new Interface(this.body);
UI.setBackground("#000");
也将按照以下方式工作:

var UI = new Interface();
UI.setBackground("#000");

我已经尝试过类似的方法,但问题是“document”对象在方法中不起作用。。。