クラスがある場合:
class Haha
constructor: (@lolAmount = 1) ->
alert @lolAmount
そして、オブジェクトが適切なクラスであるかどうかを確認したいのですが、常に安全に使用できconstructor.name
ますか?
haha = new Haha()
unless haha.constructor.name is 'Haha'
throw Error 'Wrong type'
または使用する方が良いですinstanceof
:
haha = new Haha()
unless haha instanceof Haha
throw Error 'Wrong type'
私が持っている議論の1つは、次instanceof
を使用する場合extends
です。
class BigHaha extends Haha
bigHaha = new BigHaha
console.log bigHaha instanceof Haha #true
しかし、JavaScript演算子であることは、どれほど安全かということです。私はそれについて懐疑的である必要があると感じています。
一方、constructor.name
何が起こっているのかは非常に明確です。constructor.name
すべてのオブジェクトに設定されることが保証されていますか?
情報をありがとう。