Javascript OOP-对象列表上的公共属性
我正在建立一个对象列表 看起来是这样的:Javascript OOP-对象列表上的公共属性,javascript,oop,Javascript,Oop,我正在建立一个对象列表 看起来是这样的: var item = {} // new object item['d'] = { element: 'string', val_1: false, val_2: false, val_3: false } item['d_right'] = { element: 'Whatever', val_1: false, val_2: false, val_3: false } item['d
var item = {} // new object
item['d'] = {
element: 'string',
val_1: false,
val_2: false,
val_3: false
}
item['d_right'] = {
element: 'Whatever',
val_1: false,
val_2: false,
val_3: false
}
item['d_left'] = {
element: 'Something',
val_1: false,
val_2: false,
val_3: false
}
class right {
item['d'] = {
element: 'Whatever',
val_1: false,
val_2: false,
val_3: false
}
// Other elements from the class right
}
class left {
item['d'] = {
element: 'Something',
val_1: false,
val_2: false,
val_3: false
}
// Other elements from the class left
}
这些对象中的每一个都可以属于某种族或类。我不完全理解OOP中类的概念
我会有两个家庭:左派和右派
我想做什么,而不是做这样的事情:
var item = {} // new object
item['d'] = {
element: 'string',
val_1: false,
val_2: false,
val_3: false
}
item['d_right'] = {
element: 'Whatever',
val_1: false,
val_2: false,
val_3: false
}
item['d_left'] = {
element: 'Something',
val_1: false,
val_2: false,
val_3: false
}
class right {
item['d'] = {
element: 'Whatever',
val_1: false,
val_2: false,
val_3: false
}
// Other elements from the class right
}
class left {
item['d'] = {
element: 'Something',
val_1: false,
val_2: false,
val_3: false
}
// Other elements from the class left
}
会有这样的东西:
var item = {} // new object
item['d'] = {
element: 'string',
val_1: false,
val_2: false,
val_3: false
}
item['d_right'] = {
element: 'Whatever',
val_1: false,
val_2: false,
val_3: false
}
item['d_left'] = {
element: 'Something',
val_1: false,
val_2: false,
val_3: false
}
class right {
item['d'] = {
element: 'Whatever',
val_1: false,
val_2: false,
val_3: false
}
// Other elements from the class right
}
class left {
item['d'] = {
element: 'Something',
val_1: false,
val_2: false,
val_3: false
}
// Other elements from the class left
}
然后,能够轻松地将其命名为:
console.log(item[left][d].element) // would echo "Something"
这是这样做的一种方式吗
感谢您的帮助。这就是Javascript的工作原理,请明智地使用它
class middle {
constructor(element) {
this.var1 = 1;
this.var2 = 2;
this.element = element;
}
}
class left extends middle {
constructor() {
// calls the constructor of middle
super("left_element")
}
}
var myLeft = new left()
myLeft.var1 // -> 1
然而,有很多讨论,如果它是好的还是不好的,因为正如其他人所说的,它更多的是js的原型功能之上的一个语法糖
我个人并不使用它,在大多数情况下,一个对象或函数就足以在javascript中使用
但是,在某些情况下,您必须使用类,因此了解它的工作原理不是一个坏主意。我的建议是,如果您试图学习OOP,请不要使用javascript。使用更适合其概念的语言。是的!特别是如果你想了解基于类的OOP,因为JS class关键字实际上不是基于类的OOP,而是基于原型的OOP的语法糖。谢谢你的回答。我不是在学习OOP,我必须用javascript来做这件事。