如何拥有一个原型的一堆实例

How to have a bunch of instances of a prototype?

本文关键字:一堆 实例 何拥 有一个 原型      更新时间:2023-09-26

Fiddle!!

我正在尝试建立一个系统,在那里我可以有一堆colorBox的实例,我在这里有一个名为box的实例。一切都很好,只是我想在创建新的colorBox后更改它们的样式,比如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();

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