Вход

Просмотр полной версии : объекты JS "Конструкторы"


pepel266
02.11.2015, 13:52
Добрый день, js изучаю относительно недавно.. ни как не разберусь с "конструкторами и прототипами" объектов... Может сможет кто согласиться растолковать мне что да как....
Допустим есть конструктор объекта:
//кострутор обекта....
function BaseObj(){
this.name = nameCase();
this.rest = checkCache();
}
с помощью этого конструктора заполняется массив:
function ArrBase(){
var datBaseArr = [];
var length = prompt('кол - во объектов:',1);
if(!isNumeric(length)){
ArrBase();
}
for(var i = 0;i < length;i++){
datBaseArr.push(new BaseObj());
}
return datBaseArr;
}
Как мне добавить свойство любому выбранному объекту из массива и записать в него значение, в нужный мне период времени, допустим по клику мыши...
Необходимо,что бы при создании объектов этого свойства у них не было...
Например:
Object.defineProperty(Здесь к чему привязыват, к BaseObj или же непосредственно datBaseArr[i]? ,"subtrahend", {
set: function() {......}
})

loljs
06.11.2015, 16:42
Не особо внятно изложено, но, возможно вот это

<html>
<head>

<meta charset="utf-8">

<style>


</style>

</head>
<body>



<button id="add">add</button>
<button id="show">show</button>

<script>


function BaseObj(){
this.array = []
}
BaseObj.prototype.add = function(value){this.array.push(value)}
BaseObj.prototype.show = function(){alert(this.array)}

//с помощью этого конструктора заполняется массив:
function ArrBase(){
var datBaseArr = [], length
if(!/^\d+$/.test(length = prompt("number of objects", 1))){
ArrBase();
}
for(var i = 0; i < +length; i++){
datBaseArr.push(new BaseObj());
}
return datBaseArr;
}

arr = ArrBase()

add.onclick = function(){arr[0].add(1)}
show.onclick = function(){arr[0].show()}


</script>
</body>
</html>