Sollte ich eine Objekteigenschaft in eine Objektmethode übergeben?

8

Ich versuche objektorientiertes JavaScript zu lernen. Ich arbeite mit einer einfachen Methode:

%Vor%

Allerdings habe ich gelernt, dass es oft eine gute Idee ist, Variablen in Funktionen zu überführen, wenn man mit normalen Funktionen arbeitet, in Objekten jedoch erscheint das ein wenig klobig.

%Vor%

Beide Methoden funktionieren. Was sind die Vor- und Nachteile der verschiedenen Ansätze, wenn man annimmt, dass user.log immer nur Eigenschaften innerhalb der Benutzerklasse benötigt.

    
Himmators 15.12.2014, 15:03
quelle

2 Antworten

1

Sie haben gerade erwähnt, dass Sie versuchen, OOP in JavaScript zu lernen, aber betrachten Sie die Protokollfunktion in Ihrem user -Objekt, wenn es keine Benutzerinstanz, keine log method eighther gibt. Das ist nicht das gleiche Konzept wie OO in C ++ oder C #. Meiner Meinung nach wird prototype den oop am besten beschreiben, wie folgt:

%Vor%

auf diese Weise wird log in keiner Instanz von users vorkommen, sondern in __proto__ , was in jedem Fall eine Referenz von prototype ist. Das bedeutet, wenn Sie Instanzen erstellen, teilen sie alle Funktionen wie C ++ oder C #. Schließlich solltest du niemals das zweite Sample in deinem Post verwenden, das sind keine OO-Dinge.

    
Mike 16.12.2014, 10:21
quelle
0

Wenn Sie möchten, dass log immer die URL des Objekts ausgibt, dann würden Sie die URL des Objekts natürlich nicht als Parameter übergeben, da log es selbst abrufen kann.

Wenn Sie verschiedene Eigenschaften des Objekts protokollieren möchten, würde ich vorschlagen, separate Routinen wie logUrl und logBlah für die einzelnen Fälle zu erstellen.

Wenn Sie möchten, dass log einen beliebigen Wert ausgibt, müssen Sie natürlich den Wert übergeben.

Wenn es keine Protokollierung gibt, die sich auf das Objekt bezieht, dann können Sie einfach eine Protokollierungsroutine haben, die unabhängig von dem Objekt ist, das protokolliert, was auch immer Sie übergeben.

    
user663031 15.12.2014 18:18
quelle

Tags und Links

Django: Verwenden von Annotate, Count und Distinct in einem Queryset ___ qstntxt ___

Ich habe eine .NET Web API mit einer Reihe von Endpunkten / Methoden, die eine Angular App aufruft. Ich möchte jetzt das Login-System gegen unser Active Directory implementieren und mich fragen, was meine Möglichkeiten sind.

Früher war es ganz einfach: Windows- oder Formularauthentifizierung und dann nur eine einfache Konfiguration in der Datei web.config und möglicherweise ein benutzerdefinierter Anbieter. Aber jetzt scheint es viel mehr Optionen mit OWIN, OAuth, Token-basierte Authentifizierung, etc. zu geben.

Wo fange ich an? Ich habe ein Formular mit Benutzername, Passwort und einem Login-Button in der Angular App, und ich habe das Active Directory im Backend. Was soll passieren, nachdem der Benutzer die Login-Taste gedrückt hat? Jede Richtung würde helfen.

Danke.

    
___ tag123aspnet ___ ASP.NET ist ein Framework zur Entwicklung von Microsoft-Webanwendungen, mit dem Programmierer dynamische Websites, Webanwendungen und Webdienste erstellen können. Es ist nützlich, dieses Tag in Verbindung mit dem Typ des Projekttyps zu verwenden, z. [asp.net-mvc], [asp.net-webforms] oder [asp.net-web-api]. Verwenden Sie dieses Tag NICHT für Fragen zu ASP.NET Core - verwenden Sie stattdessen [asp.net-core]. ___ tag123angularjs ___ Für Fragen zu AngularJS (1.x), dem Open-Source-JavaScript-Framework. Verwenden Sie dieses Tag NICHT für Angular 2 oder höhere Versionen. Verwenden Sie stattdessen das [eckige] -Tag. ___ tag123aspnetwebapi ___ Die ASP.NET-Web-API ist ein Framework zum Erstellen von HTTP-Diensten für Clients wie Browser und mobile Geräte. Es basiert auf dem Microsoft .NET Framework und ist ideal für den Aufbau von RESTful-Diensten. ___ tag123authentication ___ Authentifizierung ist der Prozess der Feststellung, ob jemand oder etwas in der Tat ist, wer oder was es ist. AngstJS mit .NET Web API: Authentifizierung mit AD ___ tag123net ___ Das .NET-Framework ist ein Software-Framework, das hauptsächlich für das Microsoft Windows-Betriebssystem entwickelt wurde. Es enthält eine Implementierung der Basisklassenbibliothek, Common Language Runtime (allgemein als CLR bezeichnet), Common Type System (allgemein als CTS bezeichnet) und Dynamic Language Runtime. Es unterstützt viele Programmiersprachen, einschließlich C #, VB.NET, F # und C ++ / CLI. NICHT für Fragen zu .NET Core verwenden. ___ answer27574371 ___

Nun, es hängt davon ab, was Sie wirklich brauchen.

Wenn Sie nur AD-Benutzer authentifizieren möchten, können Sie versuchen, sich in ihrem Namen in AD zu authentifizieren, und im Erfolgsfall geben Sie entweder einen Token oder einen Authentifizierungscookie zurück.

Aber ich denke nicht, dass es eine gute Idee ist, Benutzer dazu zu bringen, ihr Domänenkennwort zu verwenden, es sei denn, Sie verfügen über eine Zwei-Faktor-Authentifizierung.

Es ist besser, das AD-Schema mit zusätzlichen Daten für die Authentifizierung durch Ihren Dienst zu erweitern oder sogar einen eigenständigen Authentifizierungsserver mit zugehörigen Domänenbenutzerinformationen zu verwenden. Schauen Sie, wie es im SQL-Server gemacht wird (aber in umgekehrter Richtung): Sie müssen den internen Benutzer definieren, der der Domänenanmeldung entspricht. Dieser Ansatz ermöglicht es Ihnen, Benutzer zu haben, die nicht zu AD gehören, manchmal kann dies für das Outsourcing von Aufgaben wichtig sein.

Sehen Sie sich IdentityServer

an     
___