gpt4 book ai didi

javascript - dojo:在自己的类中实例化一个对象

转载 作者:行者123 更新时间:2023-12-03 04:44:51 24 4
gpt4 key购买 nike

假设我有一个类(比方说,LinkedListNode.js)定义如下:

// LinkedListNode.js
define([
"dojo/_base/declare"
] , function (declare) {

return declare(null, {

constructor: function(data) {
this._data = data;
},

addNext: function(data) {

}

});

});

如何在自己的定义中实例化此类的实例,如下所示:

// LinkedListNode.js
define([
"dojo/_base/declare"
] , function (declare) {

return declare(null, {

constructor: function(data) {
this._data = data;
},

addNext: function(data) {
this._next = new LinkedListNode(data);
}

});

});

这是我尝试用 Java 执行的示例:

class LinkedListNode {
private int data;
private LinkedListNode next;

public LinkedListNode(int data) {
this.data = data;
}

public void addNext(int data) {

// How can I execute this same statement in JavaScript/Dojo?
this.next = new LinkedListNode(data);

}
}

最佳答案

在 Dojo 中你不会这样做。您只需将新类放在您想要使用它的地方的定义部分,Dojo 就会为您进行实例化。因此,如果您保存在 Object.js 上,您将像这样使用它:

define([
"dojo/_base/declare",
"yourpath/Object"
] , function (declare, object) {

return declare(null, {

constructor: function() {
},

test: function() {
object.whatever();
}


});

});

根据编辑进行补充

好吧,按照你想要的方式使用,你不能用dojo的声明系统来做到这一点。你必须以更传统的方式来做。 Js是一种免费的自由语言,你可以通过多种方式做事。所以你有几种方法可以在 JS 中做类似的事情。这里有 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 = {}

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;
}

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/

但是如何将其放入 Dojo 中呢? JS 中总是有很多方法,其中之一是:

// 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;
});

那么你可以像这样使用它:

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);

}
});
});

希望现在更清楚了:)

关于javascript - dojo:在自己的类中实例化一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42914268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com