Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

Reflect.setPrototypeOf 和 extends 有区别吗?

$
0
0

这两种写法有区别吗?

import { Model } from 'sequelize'
class Book extends Model {
  static fields (DataTypes) {
    return {
      title: DataTypes.STRING,
      author: DataTypes.STRING
    }
  }
}
export default Book
import { Model } from 'sequelize'
class Book {
  static fields (DataTypes) {
    return {
      title: DataTypes.STRING,
      author: DataTypes.STRING
    }
  }
}
Reflect.setPrototypeOf(Book, Model)
export default Book

这两个导出来的 Book 类, 使用 init 方法(Model 内提供) 初始化都是可以成功的. 但使用 setPrototypeOf这种方法, 在调用 findAll时会查询出一堆空对象如下(findAll 不报错, 但有些方法如 create 会报错):

[ 
  Book {},
  Book {},
  Book {}
]

如果使用 extends甚至 extends后再使用 setPrototypeOf方法, 都可以正确查询出来结果. 求解疑…


Viewing all articles
Browse latest Browse all 14821

Trending Articles