我正在尝试编写一个覆盖Immutable.Record的'isEmpty'的代码
无论如何,我对字符串比较有疑问。
import Immutable from 'immutable'
export default function createSchema(schema) {
const record = Immutable.Record(schema)
const Schema = class extends record {
isEmpty() {
const aString = this.toString()
const bString = this.constructor().toString()
console.log('comp1', this.toString() === this.constructor().toString())
console.log('comp2', aString === bString)
}
}
return Schema
}
在以下代码中,
import createSchema from 'there'
const aRecord = createSchema({ id: '' })
const a = new aRecord({ id: '1' })
a.isEmpty()
我认为'comp1'和'comp2'都应该打印为false。 (a不是空的!)
但只有'comp1'变为真,'comp2'变为假。
怎么了?
========添加=======
感谢@Felix Kling,我尝试了'新'关键字
我发现改变一行非常不合逻辑
const bString = new this.constructor().toString()
使comp1成为假。
但是,
console.log('comp1', this.toString() === new this.constructor().toString())
不会使comp1错误