self -> this
prototype style
fix bug: shape miss