Add support for class member variable

supersedes #1417
Yes. ES6 has class side inheritance. Actually, I think it will be wrong if we do not use `this`