2 Stimmen

Javascript-Erstellung von Objekten

Ich bin ein Javascript-Objekt zu erstellen, die Informationen über den Benutzer in meine Website (für einfachen Zugriff) gespeichert wird, aber für mich, Es ist sehr schwierig gewesen, die Möglichkeiten der Erstellung eines Objekts in Javascript zu verstehen. Ich habe gesehen, Beispiele mit dem Prototyp Weg, und andere mit den Schließungen Weg, ich beschloss, mit den Schließungen zu bleiben, weil ich nur eine einzige Instanz dieses Objekts benötigen, und so, don't ist ein großer Overhead.

Ich frage mich, ob das, was ich tue, richtig ist, und ob es eine Möglichkeit gibt, meinen Code zu verbessern, das ist mein Code:

(function(window){
    var mysite = (function() {
        var me = this;

        return { //public interface
            init : function(userInfo){
                me.user = userInfo;
                return this;
            },
            sayHello : function(){
                return 'Hello, my name is ' + me.user.name + ' and I am ' + me.user.age + ' years old.';
            }
        }
    }());

    window.mysite = function(userInfo){
        return mysite.init(userInfo);
    }
})(window);

var mysite = mysite({name : 'Jonathan', age : 17});
mysite.sayHello();

Bearbeiten #1

Wenn ich dem Hauptobjekt MySite Unterobjekte hinzufügen möchte und diese Unterobjekte ihre eigenen Methoden und Eigenschaften sowie Zugriff auf Eigenschaften und Methoden des Hauptobjekts (MySite) haben, möchte ich Folgendes tun:

mysite.timezone.calculeUserTimezone();

Wie soll man vorgehen?

1voto

Raynos Punkte 162170

Verwendung des Prototyps

(function(window) {
    var MySite = function(opt) {
        this.user = opt;
    };

    MySite.prototype.sayHello = function() {
        return 'Hello, my name is ' + this.user.name + ' and I am ' + this.user.age + ' years old.';
    };

    window.mysite = function(options) {
        return new MySite(options);
    }
})(window);

var a = mysite({
    name: 'Jonathan',
    age: 17
});
console.log(a.sayHello());

Ich würde mich stattdessen für den prototypischen Ansatz entscheiden. Ihr nicht unter Ausnutzung der Schließungen so dieser Weg ist ordentlicher.

Live-Beispiel

Verwendung von Verschlüssen

(function(window) {
    var MySite = function(opt) {
        var user = opt;

        this.sayHello = function() {
            return 'Hello, my name is ' + user.name + ' and I am ' + user.age + ' years old.';
        }
    };

    window.mysite = function(options) {
        return new MySite(options);
    }
})(window);

var a = mysite({
    name: 'Jonathan',
    age: 17
});
console.log(a.sayHello());

Live-Beispiel

0voto

dhinesh Punkte 4536
   var mysite = (function() {
        var me = this;

        return { //public interface
            init : function(userInfo){
                me.user = userInfo;
                return this;
            },
            sayHello : function(){
                return alert(me.user.name);
            }
        }
    })();

mysite.init({name : 'Jonathan', age : 17});
mysite.sayHello();

Ich denke, das wird auch gut sein, denn mysite wird ein einziges Objekt sein, auf das man überall zugreifen kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X