@ZaxapKramer
Больной верстальщик

JavaScript; Что не так с моей функцией-модулем (object)?

Подскажите, пожалуйста, что тут не так?
Как написать подобное правильно? Простите, пожалуйста, за такой глупый вопрос, но нигде не нашел подобного примера (с аргументом функции в виде объекта).

var human = (function (person) {
    person = {
        firstName : "John",
        lastName  : "Doe",
        age       : person.age || 50,
        eyeColor  : person.eyeColor || "blue",
    };
    return person.age + ", " + person.eyeColor;
});

var getPerson = new human({ eyeColor: "Yellow" });
// 

console.log(getPerson({ eyeColor: "Green" }));
  • Вопрос задан
  • 183 просмотра
Решения вопроса 2
@Free_ze
Пишу комментарии в комментарии, а не в ответы
var Human = (function (person) {

    this.firstName = "John";
    this.lastName = "Doe";
    this.age = person.age || 50;
    this.eyeColor = person.eyeColor || "blue";

    this.toString = function() {
        return person.age + ", " + person.eyeColor;
    };
});

var pers = new Human({ eyeColor: "Yellow" });
// 

console.log(pers);


Выглядеть в конечном итоге это может как-то так:
var SampleClass = (function(localFirstDependencyName, localSecondDependencyName){
    'use strict';
    
    var _defaultSettings = {
        option: 'option'
    }

    var constructor = function(settings){
        this._settings = $.extend(this._settings || {}, _defaultSettings, settings);
    
        this.publicField = null;
        this._protectedField = null;    
        this._privateField = null;
    };
        
    $.extend(constructor.prototype, {
        publicConstant: 'Constant',
        protectedConstant: 'Constant',
        _privateConstant: 'Constant',

        //#region Public
        publicMethod: function () {      
            this._protectedMethod();    
        },
        //#endregion
        
        //#region Protected
        _protectedMethod: function () {         
        },
        //#endregion

        //#region Private
        _privateMethod: function(self, value){
        },  
        //#endregion
    });
        
    return constructor;
}(globalFirstDependencyName, globalSecondDependencyName));
Ответ написан
Комментировать
doniys_a
@doniys_a
Backend-разработчик (Php, node.js, python, ruby)
1. Не возвращает функция ничего.
2. после new создается объект
var human = (function (person) {
    this.person = {
        firstName : "John",
        lastName  : "Doe",
        age       : person.age || 50,
        eyeColor  : person.eyeColor || "blue",
    };
    this.getInfo = function () {return person.age + ", " + person.eyeColor; }
    return this;
});

var getPerson = new human({ eyeColor: "Yellow" });
//

console.log(getPerson.person, getPerson.getInfo());
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы