Допустим, у меня есть объект:
var obj = {
name: "object",
height: 12,
default: false
}
Можно ли сделать так, чтобы, когда я ссылаюсь на объект была ссылка не на объект(obj), а на, допустим, свойство default(obj.default), но когда я ссылаюсь на свойства/методы объекта, то все работало нормально? Например так:
var t = obj;
alert(t == obj.default) //true
var y = obj.name;
alert(y == obj.name) //true
Но довольно костыльно.
var initialObject = {
name: "object",
height: 12,
default: false
}
// Создаем переменную obj, которая равна желаемому значению по умолчанию
var obj = initialObject.default;
// Прототипу объекта obj (в данном случае это Boolean) подменяем прототип на желаемый
Object.setPrototypeOf(Object.getPrototypeOf(obj), initialObject);
// Теперь, обращаясь к obj будет возвращено значение по умолчанию (потому что мы прямым текстом его установили в стр. 8)
console.log(obj);
// А при обращении к одному из свойств объекта initialObject (по сути, объекта obj), оно будет взято из цепочки прототипов (если будет найдено, конечно)
console.log(obj.height);
// Однако сразу же заметны подводные камни: поскольку мы заменили прототип глобального Boolean, то теперь любой объект, созданный соответствующим конструктором будет иметь в качестве прототипа initialObject
var drawback = (function(){return true}()).name;
console.log(drawback);
// или даже еще проще: console.log(new Boolean(true).height);
Как на счет классов?
function Obj(name, height) {
this.name = name;
this.height = height;
}
let defaultObj = new Obj(); //пустой Obj со свойствами name, height равными undefined
let customObj = new Obj("Ваня", "183"); //заполненный Obj
customObj.name; // "Ваня"
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть некий скрипт, который должен получить из запроса POST параметры и записать их в таблицу Google SheetВот код скрипта:
Как сделать, что бы эллемент #drag приклеивался к внутринним границам agame-board и собственно элемменты(#drag) приклеивались друг к другу
Просьба помочь сделать валидацию поискачто у меня : символы которые я хочу отсеиваются,НО если первоначально ввести пробел - то выскакивает...