Изучил миксины в es5 (т.е. через самописную функцию)
var extend = function(target) { // get target [0] and mixins
if(!arguments[1]) { // if no mixins in arguments[]
return; // quit
}
for(i=1; i < arguments.length; i++) { // skip [0] as its the target
var source = arguments[i]; // get current mxin
console.log(source);
for(var prop in source) { // inner loop with current mixin
if(!target[prop] && source.hasOwnProperty(prop)) { // antiduplicate
target[prop] = source[prop]; // assign each
}
}
}
};
теперь изучаю es6 и правильно я понимаю что в нем уже не используются самописные функции для миксинов, и есть внутренняя функция для примесей?
В самом языке миксинов нет, но вместо
var extend = function(target) { // get target [0] and mixins
if(!arguments[1]) { // if no mixins in arguments[]
return; // quit
}
for(i=1; i < arguments.length; i++) { // skip [0] as its the target
var source = arguments[i]; // get current mxin
// console.log(source);
for(var prop in source) { // inner loop with current mixin
if(!target[prop] && source.hasOwnProperty(prop)) { // antiduplicate
target[prop] = source[prop]; // assign each
}
}
}
};
var obj = {
a: 5
}
extend(obj, { b: 6})
console.log(obj)
Можно написать:
function extend (obj) {
Object.assign(obj, ...arguments)
}
let obj = {
a: 5
}
extend(obj, { b: 6}, { c: 7, d: { a: 8 } })
console.log(obj)
Но как тут так и у Вас идет мутирование оригинального объекта, плохая практика, нужно возвращать новый объект.
const oldObj = {
a: 5
}
const newObj = extend(oldObj, { b: 6}, { c: 7, d: { a: 8 } })
console.log(oldObj, newObj)
function extend (obj) {
// делает глубокую копию чтобы убрать ссылки на объекты
return copy(Object.assign({}, obj, ...arguments))
}
function copy (obj) {
return JSON.parse(JSON.stringify(obj))
}
В коде приставлен самый простой и быстрый вариант клонирования, но не совсем полноценно работает, подробней можете прочитать ЗДЕСЬ.
Я обычно использую этот npm пакет для этого.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как авторизоваться в google api изнутри javascript скрипта, введя почту и пароль? Сделать авторизацию через всплывающее окно авторизации гугла у меня...
Подскажите пожалуйста, есть страница на которой можно перенести <p> но нельзя перемещать <button>Подскажите пожалуйста, почему
При получении данных из БД довольно часто возникает такая ошибкаВ чем проблема? Использую среду NetBeans и GlassFish Server