Здравствуйте, я знаю, что этот вопрос задан много раз, но слишком много мнений и аргументов. У меня нет большого опыта для проверки ответов, поэтому здесь я объясню, что я ищу, и, возможно, вы можете указать мне в правильном направлении.Расширение javascript-объекта и его свойств
В моем приложении я создал объект с некоторыми методами, большинство из них имеет набор предопределенных значений по умолчанию, например, так:
module.exports = {
submit: function(options) {
var defaults = {
_id: 1453,
text: 'Some text',
dataObj:{
links: 3532,
arr: ['James','Paul','Lina'],
},
dims:{
width: getClientWidth(),
height: getClientHeight()
}
}
options.extend(defaults);
return sendData(defaults);
}
// other similar methods - functions
};
То, что я заинтересован в это, чтобы расширить свойства и атрибуты локальной переменной по умолчанию. Как видите, значения по умолчанию - это сложный структурированный объект. Имейте в виду, что структура параметров может быть еще более сложной. Так что простой мелкий слияние/копия может быть не идеальной здесь, если я не ошибаюсь.
Использование, как вы можете себе представить:
var app = {
// stuff
}
app.fn = require('common/lib.js');
app.initialize(function(){
var settings = {
// hell here
}
app.fn.submit(settings)
})
Спасибо заранее.
PS. Никаких библиотек не используется, и я заинтересован в чистой javascript-реализации функции extend() в любом случае. спросил здесь
вы используете NodeJS или запуске в браузере? В любом случае попробуйте: 'options.extend (true, defaults);' он устанавливает флаг «глубокой копии». Редактировать: по крайней мере, для ряда библиотек он должен. Не совсем уверен, откуда идет ваша функция расширения. – Hless
Я не использую библиотеку, это для проекта appcelerator, над которым я работаю, и я ищу решение для javascript ppure – Syd