Следующий пример основан на Mike Bostock's reusable charts proposal.Обмен функциями геттера/сеттера по Javascript-коду
Указанные две функций (bar()
и pie()
), которые каждый генерируют различный вид диаграммы:
function bar() {
var width = 720, // default width
height = 80; // default height
function my() {
console.log('bar created: ' + width + ' ' + height);
}
my.width = function(value) {
if (!arguments.length) return width;
width = value;
return my;
};
my.height = function(value) {
if (!arguments.length) return height;
height = value;
return my;
};
my.render = function() {
my();
return my;
};
return my;
}
function pie() {
var width = 720, // default width
height = 80; // default height
function my() {
console.log('pie created: ' + width + ' ' + height);
}
my.width = function(value) {
if (!arguments.length) return width;
width = value;
return my;
};
my.height = function(value) {
if (!arguments.length) return height;
height = value;
return my;
};
my.render = function() {
my();
return my;
};
return my;
}
я могу назвать эти функции с помощью метода цепного как таковые:
bar().width(200).render(); // bar created: 200 80
pie().height(300).render(); // pie created 720 300
Есть способ кодировать их, когда мои методы getter и setter одинаковы? Например, я планирую, что функции width()
в каждом из них будут такими же. Как я могу заставить функции и pie()
наследовать общие функции, такие как width()
, height()
, render()
?
Theres старое сообщение, написанное john resig о наследовании в javascript, которое может служить тому, что вы пытаетесь сделать. http://ejohn.org/blog/simple-javascript-inheritance/. Также может стоить искать обновленную/адаптированную версию. Вот один, который я нашел с быстрым поиском Google http://stackoverflow.com/questions/15050816/is-john-resigs-javascript-inheritance-snippet-deprecated – user1318677