多态
当你调用一个对象的String
函数(将一个值转换为一个字符串)时,它会调用该对象的toString
方法来尝试从它创建一个有意义的字符串。 我提到一些标准原型定义了自己的toString
版本,因此它们可以创建一个包含比"[object Object]"
有用信息更多的字符串。 你也可以自己实现。
Rabbit.prototype.toString = function() {
return `a ${this.type} rabbit`;
};
console.log(String(blackRabbit));
// → a black rabbit
这是一个强大的想法的简单实例。 当一段代码为了与某些对象协作而编写,这些对象具有特定接口时(在本例中为toString
方法),任何类型的支持此接口的对象都可以插入到代码中,并且它将正常工作。
这种技术被称为多态(polymorphism)。 多态代码可以处理不同形状的值,只要它们支持它所期望的接口即可。
我在第四章中提到for/of
循环可以遍历几种数据结构。 这是多态性的另一种情况 - 这样的循环期望数据结构公开的特定接口,数组和字符串是这样。 你也可以将这个接口添加到你自己的对象中! 但在我们实现它之前,我们需要知道什么是符号。
当前内容版权归 wizardforcel 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 wizardforcel .