包装类

时间:2018-05-06 21:28:09

标签: javascript reactjs

我试图理解Javascript中的包装类。

根据我的理解,我认为包装元素是这样的(这里是div包装吗?)

<div> 
<!--- content and tags here ---> 
</div>

但是Wrapper类似乎是新的,它会是这样的吗?

考虑一下

class myClass {
//Some content
}

export default myClass 

如果我在导出语句中用高阶组件包装一些东西(HOC与反应有关但你可能会忽略)

export default something (myClass)

这会被视为包装类吗?或包装类是别的什么?

2 个答案:

答案 0 :(得分:2)

在vanilla javascript中没有这样的'包装'类。只有类本身就是一些功能的包装器。例如,如果我们正在编写一个棋盘,我们可能会有一个Pawn类来“包裹”所有棋子的功能:

class Pawn {

  constructor(position) {
    this.position = position;
  }

  move() { 
  // some code
    }
  }
  
  
let pawn = new Pawn('A1');

在上面的示例中,Pawn类'包装'pawn对象的所有功能。这很有用,因为现在我们可以使用这些对象而无需查看其实现细节,我们只需要知道该对象的行为方式。课程的主要内容是:

  1. 隐藏实施细节。
  2. 通过充当某个功能的包装来减少命名冲突。我认为你的来源是指“包装类”一词,因为类本身具有这种功能。

答案 1 :(得分:0)

通常在面向对象编程中,类的行为可以通过继承传递给不太通用的类。在ES6术语中,我们很可能在类定义中使用extends关键字。

Take this example of extends from MDN:

class Animal {
  constructor(name) {
    this.name = name;
  }

  speak() {
    console.log(this.name + ' makes a noise.');
  }
}

class Dog extends Animal {
  speak() {
    console.log(this.name + ' barks.');
  }
}

var d = new Dog('Mitzie');
d.speak(); // Mitzie barks.

MDN关于此的另一个重要说明:

  

ECMAScript 2015中引入的JavaScript类主要是基于JavaScript现有的基于原型的继承的语法糖。类语法没有向JavaScript引入新的面向对象的继承模型。