![](/img/trans.png)
[英]How do I create custom Java-like class/object in Cocos2d Javascript and add it to a layer
[英]JavaScript: How do I add a custom class object as a key of an array
我創建了一個自定義 class 屬性“名稱”
我還在 class 中添加了 function ,如果 2 個對象具有相同的名稱,則返回 true。 當我比較兩個同名的自定義對象時,這個 function 有效。
但是,當我將這些自定義 class 對象添加為數組/對象中的鍵時,我遇到了問題。
假設我的自定義 class object 是一個。 它也是數組中的一個鍵。 當我將 a 與數組中的鍵進行比較時,我發現 a 不在數組中。
我的 class 構造函數:
class node { constructor(name) { this.name = name; } getname() { return this.name; } equiv(other) { return Boolean(this.name == other.name); } inarray(array) { for (let key in array) { if (this.name== key.name) { return true; } } return false; } } var a = new node("assss"); var b = new node("bssss"); var a2 = new node("assss"); var c = {a:1, b:2} console.log( a.equiv(a2) ) // true //But console.log( a.inarray(c) ) // false
a.equiv(a2)
返回true
但
a.inarray(c)
返回false
^ 這是我的問題
因為你已經更新了你的問題:
只需更換
if (this.name == key.name)
經過
if (this.name == key)
因為key
是一個字符串(不是一個對象),它的值是'a'
或'b'
它們是 { a :1, b :2 } 的鍵
class node { constructor(name) { this.name = name; } getname() { return this.name; } equiv(other) { return Boolean(this.name == other.name); } inarray(array) { for (let key in array) { if (this.name == key) { return true; } } return false; } } var a = new node("a"), b = new node("b"), a2 = new node("a"), c = { a:1, b:2 }; console.log( a.equiv(a2) ) // true console.log( a.inarray(c) ) // true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.