Как добавить методы объекту после конструирования.
Добрый день. Есть следующая логика: Функция конструктор Board создаёт объект board;
random = function () {
var min = 1;
var max = 20;
return Math.floor(Math.random() * (max - min) + min);
}
Board = function() {
var _board = [];
_board.width = 15;
_board.height = 40;
var set = function () {
for (var i = 0; i < _board.width; i++) {
_board.push([])
for (var ii = 0; ii < _board.height; ii++) {
_board[i].push(random());
}
}
}.call(set)
return _board;
}
board = Board();
board будет типа Array. нужно добавить всем объектам созданным через Board ещё один метод. Как бы это сделать получше. Так как в моём варианте Board.prototype.someMethod не прокатет так как board не связан с ним. Ну или как можно конструировать массивы с определёнными методами иначе. |
Цитата:
|
DragorWW,
ок я неудачно скопировал код |
Цитата:
|
Цитата:
Но если скажите почему так делать нельзя/не желательно я буду очень признателен. |
var foo = function (param) {
this.property = param;
};
foo.prototype = {
constructor: foo,
method: function () {
return this.property;
}
};
var object = new foo (2);
alert(object.method()); // 2
object.constructor.prototype.method_2 = function() {
return this.property * 2;
};
var object_2 = new foo(3);
alert([
object.method_2(), // 4
object_2.method_2(), // 6
new foo(3).method_2() // 6
]);
|
Если я правильно понимаю....
Цитата:
В примере monolithed просто делается еще один объект object_2, но у object ничего не добавилось... |
Цитата:
|
Цитата:
monolithed,
foo.prototype = {
constructor: foo, // это лишнее, и без него будет работать
method: function () {
return this.property;
}
};
DragorWW, если вам нужен массив, то вариант только один, в функции Broad добавить _broad.someMethod = ... ибо если вы это сделаете так Array.prototype.someMethod = ... то конечно все объекты _broad будут иметь этот метод, но это плохой тон, хотя вам решать Сделать наследование от массива и не утратить саму его суть a[0] = 1; a.length = 1; a[1] = 2; a.length = 2; у меня не вышло, но я и не считаю себя гуру =-), возможно есть решения |
Цитата:
var object = {};
object.constructor.prototype.property = 1;
alert([].property);
|
| Часовой пояс GMT +3, время: 23:49. |