1

小提琴!!

我正在尝试建立一个系统,我可以在其中拥有一堆实例colorBox,我在这里有一个名为box. 一切工作正常,除了我希望能够在创建新颜色框之后更改它们的样式,例如box.resetColor('blue');为了测试这个,我创建了一个简单的函数vodoo来提醒你。但我不能打电话box.vodoo(),因为 colorBox 是一个函数而不是一个对象。

什么是让一堆实例colorbox可以随时单独更新而无需更新所有属性box(只有你想要的那些)的最佳方法?

JS:

var colorBox = function(node, options) {
    this.setSize = function(){
        node.style.width = options.width + 'px';
        node.style.height = options.height + 'px';
    };
    this.setColor = function(){
        node.style.backgroundColor = options.color;
    };
    this.setSize();
    this.setColor();
    vodoo(){
        alert('vodoo');
    }
}

var node = document.getElementById('thing1');
var options = {
    color: 'red',
    width: 200,
    height: 200
}

var box = new colorBox(node, options);
box.vodoo();
4

1 回答 1

1

http://jsfiddle.net/K8cha/5/

我可能误解了您在这里尝试执行的操作,但是您声明 voodoo 的方式存在语法错误。此更改导致此工作:

var colorBox = function(node, options) {
    this.setSize = function(){
        node.style.width = options.width + 'px';
        node.style.height = options.height + 'px';
    };
    this.setColor = function(){
        node.style.backgroundColor = options.color;
    };
    this.setSize();
    this.setColor();
    this.voodoo = function(){
        alert('voodoo');
    }
}

此外,在 JS 中,Function 对象是 Object 对象的后代,因此可以使用它自己的属性等。

于 2013-07-12T14:39:00.680 回答