Есть кусок кода :
function Actions(name,args){
this.args = args;
this.get_name = () => turn[this.args.target];
this.copy = () => {
this.args.card.copy = true;
console.log("copy : "+copy);
for(let i = 0;i<this.args.count;i++){
let k = copy(this.args.card);
this.get_name().take_card(k);
}
};
//some code
}
Есть функция copy (глубокая копия объекта), есть свойство copy у объекта card (true || false).
Почему copy, который идет ниже присвоения:
this.args.card.copy = true ;
воспринимается как свойство copy объекта card, а не как функция copy?
Причем если сместить присвоение вниз, то все работает нормально...
P.S.
function copy(arr){
if(arr.length){
var arr1 = [];
}else if(typeof arr == "object"){
var arr1 = {};
}else{
return arr;
}
for(let key in arr){
if(typeof arr[key] == "function" || typeof arr[key] != "object")
arr1[key] = arr[key];
else
arr1[key] = copy(arr[key],true);
}
return arr1;
}
P.S.S. Почему copy 1 - функция, а copy 2 - true?
//
/*1*/console.log(copy); // copy - функция
this.args.card.copy = true;
/*2*/console.log(copy) // copy - true
//
В args.card я случайно отправлял объект window, т.е. я заменял свою функцию copy на значение true.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Столкнулся с такой проблемой при использовании socketio: есть цикл в нем находится socket