2016-11-01 8 views
1

ich lerne, wie Getter und Setter in JavaScript zu definieren:Könnte jQuery Getter und Setter verwenden?

myObject = {} 
myParameters = {} 
myParameters.get = function() { 
    return this.value 
} 

myParameters.set = function(myArgument) { 
    this.value = myArgument 
} 
Object.defineProperty(myObject, 'myProperty', myParameters) 
myObject.myProperty = 3.14 
console.log(myObject.myProperty) 

Q: Könnte jQuery Verwendung Getter statt: $('#myId').val() oder $('#myId').text()?

Könnte jQuery Setzer statt $('#myId').val(x) oder $('#myId').text(x) verwenden?

+2

Beachten Sie auch, dass Getter/Setter den Funktionsaufrufen nicht unbedingt überlegen sind. vor allem, da das Kerndesign von Jquery die * Verkettung * von Funktionen beinhaltet. – tcooc

+0

@tcooc: Das ist ein sehr guter Punkt. –

Antwort

3

Ja, könnte es sicherlich. Aber es wurde ursprünglich erstellt, lange bevor JavaScript Getter und Setter hatte. jQuery wurde im Januar 2006 erstellt. Standardisiertes JavaScript (korrekt, "ECMAScript") hat die Getter und Setter offiziell erst im Dezember 2009 zur ECMAScript 5th edition specification bekommen (obwohl Mozilla's JavaScript davor hatte), und es war Jahre vor Browsern in der Wildnis konnte man sich darauf verlassen, sie zu haben (tatsächlich hat IE8 immer noch nahe 3% of the worldwide market share, und es unterstützt sie nicht außer   — bizarr   — auf DOM-Elemente).

Und es gibt tcooc's very good point die Setter verwenden bedeuten würden Sie nicht Anruf wie $("#foo").text("updated").addClass("highlight"); Verkettungs tun könnte, was ein wesentliches Merkmal von jQuery API ist (sage nicht, es entweder gut oder schlecht ist, nur, dass es wichtig ist).