Sie nicht tun Es ist so in Dojo. Sie legen Ihre neue Klasse einfach in den define-Bereich des Ortes, an dem Sie sie verwenden möchten, und Dojo macht den Start für Sie. Also, wenn Sie auf Object.js gespeichert, würden Sie es wie folgt verwenden:
define([
"dojo/_base/declare",
"yourpath/Object"
] , function (declare, object) {
return declare(null, {
constructor: function() {
},
test: function() {
object.whatever();
}
});
});
komplementiert basierend auf Änderungen
Nun, wie Sie wollen verwenden, können Sie es nicht mit Dojo declare System. Sie müssen es auf die traditionellere Art tun. Js ist eine freie Sprache, Sie können Dinge auf viele Arten tun. Sie haben also mehrere Methoden, um so etwas in JS zu tun. Hier sind 3:
function LinkedListNode(data) {
this.addNext = function(data) {
this.next = new LinkedListNode(data);
return this.next;
}
this.data = data;
}
var ll1 = new LinkedListNode(777);
ll1.addNext(555).addNext(333);
console.log(ll1.next.data);
console.log(ll1.next.next.data);
function LinkedListNodeV2(data) {
var self = {}
\t \t
self.addNext = function(data) {
self.next = new LinkedListNodeV2(data);
return self.next;
}
self.data = data;
return self
}
var ll2 = LinkedListNodeV2(777);
ll2.addNext(555).addNext(333);
console.log(ll2.next.data);
console.log(ll2.next.next.data);
class LinkedListNodeV3 {
constructor(data) {
this.data = data;
}
\t addNext(data) {
this.next = new LinkedListNodeV3(data);
return this.next;
}
}
var ll3 = new LinkedListNodeV3(777);
ll3.addNext(555).addNext(333);
console.log(ll3.next.data);
console.log(ll3.next.next.data);
JSFiddle: https://jsfiddle.net/s1pemgbk/2/
Aber wie setzen Sie das in Dojo? Wie immer in JS es viele Möglichkeiten gibt, ist einer von ihnen dies:
// LinkedListHelper.js
define([
"dojo/_base/declare"
] , function (declare) {
class LinkedListNode {
constructor(data) {
this.data = data;
}
addNext(data) {
this.next = new LinkedListNode(data);
return this.next;
}
};
var self = {};
self.getLLInstance = function(data) {
return new LinkedListNode(data);
}
return self;
});
dann würden Sie es wie folgt verwendet werden:
define([
"dojo/_base/declare",
'project/helpers/linkedListHelper',
], function (
declare,
linkedListHelper
) {
return declare([_WidgetBase, _TemplatedMixin], {
postCreate: function() {
this.inherited(arguments);
var ll = linkedListHelper.getLLInstance(777);
ll.addNext(555).addNext(333);
console.log(ll.next.data);
console.log(ll.next.next.data);
}
});
});
Hoffe, dass es jetzt klarer ist :)
Hallo, ich glaube, Sie übernehmen Code 'object' ist ein einzelner Ton. Ich denke, OP ist interessant beim Erstellen einer Objektinstanz aus einer Dojo-Klasse. – GibboK
@GibboK keine dieser beiden Antworten ist, was ich suche ... siehe meine Bearbeitungen – scottyseus
@scottyseus danke für Ihren Kommentar, könnten Sie mehr Details in Ihrer Frage hinzufügen ... wo wollen Sie initiieren neues Objekt(); in einer anderen Klasse? – GibboK