Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript OOP-对象列表上的公共属性_Javascript_Oop - Fatal编程技术网

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来做这件事。