Я пытаюсь внести изменения в одно место, чтобы повлиять на объект конфигурации, переданный во все экземпляры объекта. Объект доступен по всему миру следующим образом:Как установить свойство по умолчанию для объекта, который передается в конструктор?
function Crayons(){
return {
foo: ThirdPartyFoo
}
}
объект инициализируется в моем проекте с var myFoo = new Crayons().foo({color: "red"});
Я хотел бы сделать {color: "blue"}
по умолчанию, так что если кто-то не проходит в цвет, синий.
Я пытался делать
function Crayons(){
var fooWithDefaults = function(){
this = new ThirdPartyFoo(arguments); //this is invalid
this.color = "blue"; //and this would overwrite color if it was set
}
return {
foo: fooWithDefaults
}
}
Но new
ключевым слова бросает меня, так как я не знаю, как создать яваскрипт конструктора, который по существу говорит this = new 3rdPartyFoo
.
Что мне не хватает?
'this.color = дано || "синий" ' – Li357
@AndrewL. что будет работать для цвета, но я до сих пор не знаю, как построить объект. – adamdport
Во-первых, 'Crayons' не реализуется как истинный конструктор, а как фабрика. Таким образом, нет необходимости ссылаться на него с помощью оператора 'new'. Во-вторых, 'Crayons' не содержит метода' foo'. Если он вызван, он возвращает объект с атрибутом 'foo', который ссылается на' ThirdPartyFoo', который может быть конструктором. Пожалуйста, исправьте свой пример тем, что является хотя бы допустимым кодом или может быть запущено без ошибок при бросании (я имею в виду 'var myFoo = new Crayons.foo ({color:" red "});') –