Aus diesem Grund bevorzuge ich die Verwendung des Prototyps gegenüber einer eigenständigen Funktion, um die Benutzerfreundlichkeit und Ausdruckskraft zu verbessern. Ich mag es einfach nicht, Objekte in Funktionen zu leiten, wenn ich nicht muss.
Während die akzeptierte Antwort funktioniert, wollte ich eine umfassendere Lösung zum Abrufen und Einstellen, die sich so ähnlich wie die native Punktnotation oder Klammernotation wie möglich verhält.
Vor diesem Hintergrund habe ich einige Prototypfunktionen zum Festlegen / Abrufen einer Objekteigenschaft ohne Rücksicht auf die Groß- und Kleinschreibung erstellt. Sie müssen daran denken, beim Hinzufügen zum Objektprototyp SEHR verantwortlich zu sein. Besonders bei Verwendung von JQuery und anderen Bibliotheken. Object.defineProperty () mit der Aufzählung false wurde speziell verwendet, um Konflikte mit JQuery zu vermeiden. Ich habe mich auch nicht darum gekümmert, die Funktionen so zu benennen, dass sie nicht zwischen Groß- und Kleinschreibung unterscheiden, aber Sie könnten es auf jeden Fall. Ich mag kürzere Namen.
Hier ist der Getter:
Object.defineProperty(Object.prototype, "getProp", {
value: function (prop) {
var key,self = this;
for (key in self) {
if (key.toLowerCase() == prop.toLowerCase()) {
return self[key];
}
}
},
enumerable: false
});
Hier ist der Setter:
Object.defineProperty(Object.prototype, "setProp", {
value: function (prop, val) {
var key,self = this;
var found = false;
if (Object.keys(self).length > 0) {
for (key in self) {
if (key.toLowerCase() == prop.toLowerCase()) {
found = true;
self[key] = val;
break;
}
}
}
if (!found) {
self[prop] = val;
}
return val;
},
enumerable: false
});
Nachdem wir diese Funktionen erstellt haben, ist unser Code sehr sauber und präzise und funktioniert einfach.
Groß- und Kleinschreibung wird nicht berücksichtigt:
var obj = {foo: 'bar', camelCase: 'humpy'}
obj.getProp("FOO");
obj.getProp("fOO");
obj.getProp("CAMELCASE");
obj.getProp("CamelCase");
Groß- und Kleinschreibung wird nicht berücksichtigt:
var obj = {foo: 'bar', camelCase: 'humpy'}
obj.setProp('CAmelCasE', 'super humpy');
obj.setProp('newProp', 'newval');
obj.setProp('NewProp', 'anotherval');
obj = {foo: true, Foo: false}