Ich lerne JavaScript mit Node. Ich mag die Idee von Objekten mit Fabriken zu schaffen, und nach viel zu diesem Thema zu lesen, habe ich Objekte mit diesem Code zu erstellen:Wie lautet die Syntax zum Hinzufügen einer anderen Funktion als eines Accessors?
// ES6 only
'use strict';
// The base object, "object literal" syntax
let animal2 = {
// public member
animalType: 'animal',
// public method
describe() {
return `This is "${this.animalType}"`;
}
};
// factory function which serves 2 purposes:
// - encapsulation, that's where private things are declared thanks to closures
// - the "real" object creation, this prevents to use "new" which is not really Js-ish
let afc = function afc() {
// private member
let priv = "secret from afc";
return Object.create(animal2, {
// Object customisation
animalType: { value: 'animal with create'},
// object extension. The new objects created here get 3 new members:
// - a private member
// - a new property
// - a new method to access the private member
// new public member
color: { value: 'green' },
secret: {
get: function() { return priv; },
set: function (value) { priv = value; },
},
KO1() {
console.log("KO1");
},
KO2: function() {
console.log("KO2");
}
});
}
// creation of an animal instance
let tac = afc();
Mein Problem ist, ich kann nicht herausfinden, was die Syntax ist ein hinzufügen Funktion, die private Daten manipulieren kann und dabei nicht nur ein Accessor ist. Ich habe hier zwei Beispiele erwähnt, die mir in den Sinn gekommen sind (KOx), aber wie ihre Namen andeuten, führt diese Syntax zu: "KOx ist keine Funktion".
gleiches Problem mit Syntax für 'beschreiben() {' in 'animal2'. –
"*" neu "das ist nicht wirklich Js-ish *" - wer zum Teufel hat dir das erzählt? – Bergi
@ FrédéricHamidi 'KO1()' ist kein Syntaxfehler, zumindest nicht in den letzten Knotenversionen. –