我正在阅读这篇文章http://www.klauskomenda.com/code/javascript-programming-patterns/#revealing,并想知道我是否可以传递参数来覆盖私有属性.
// revealing module pattern
var anchorChange4 = function () {
// this will be a private property
var config = {
colors: [ "#F63", "#CC0", "#CFF" ]
}
// this will be a public method
var init = function () {
var self = this; // assign reference to current object to "self"
// get all links on the page
var anchors = document.getElementsByTagName("a");
var size = anchors.length;
for (var i = 0; i < size; i++) {
anchors[i].color = config.colors[i];
anchors[i].onclick = function () {
self.changeColor(this, this.color); // this is bound to the anchor object
return false;
};
}
}
// this will be a public method
var changeColor = function (linkObj, newColor) {
linkObj.style.backgroundColor = newColor;
}
return {
// declare which properties and methods are supposed to be public
init: init,
changeColor: changeColor
}
}();
anchorChange4.init();
Run Code Online (Sandbox Code Playgroud)
我正在尝试更改数组颜色的值,例如将不同颜色作为参数传递.我希望我有所作为.
您可以init接受配置参数并使用以下参数扩展私有配置:
var init = function (options) {
// copy properties of `options` to `config`. Will overwrite existing ones.
for(var prop in options) {
if(options.hasOwnProperty(prop)){
config[prop] = options[prop];
}
}
//...
}
Run Code Online (Sandbox Code Playgroud)
然后你可以传递一个对象init:
anchorChange4.init({
colors: ['#FFF', '#000']
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7183 次 |
| 最近记录: |