implement JSMessageData protocol. close #149