LoginSignup
0
0

More than 5 years have passed since last update.

core-jsだとSymbolについてのkey in objectが誤判定する

Posted at
js
s1=Symbol('hoge');
s2=Symbol('fuga');
o={};
o[s1]=1;
console.log(s1 in o);// true
console.log(s2 in o);// false
core-jsだと両方trueになる

primitiveではなくobjectをpropertyのkeyにした場合はToPrimitiveしてkeyにする。native実装のSymbolはprimitiveだけどpolyfillだと当然object。

どうも同一コンストラクタのobjectをpropertyのkeyにするとkey in objectで区別できないっぽい

これによる問題がcore-js@0.9.13ではまだある模様

native実装のSymbolがない場合は、Symbolをkeyとしているpropertyについて、key in objectしないとするのが解決策っぽい。IE11,AppleWebKit/600がなくなったら心配ない。

想定問答

Q:babel使ってはどうか?
A:帰れ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0