如何拥有一堆原型实例?

时间:2013-07-12 14:31:36

标签: javascript

Fiddle!!

我正在尝试建立一个系统,我可以拥有一堆colorBox的实例,我在这里有一个名为box的实例。一切都运行正常,除了我希望能够在创建类似box.resetColor('blue');之类的东西之后改变我的新colorBox的样式。为了测试这个,我创建了一个简单的函数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();

1 个答案:

答案 0 :(得分:1)

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

我可能误解了你在这里要做的事情,但是你宣布伏都教的方式存在语法错误。此更改导致此操作:

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对象的后代,因此可以使用它自己的属性等。