fixed Safari 5 defineProperty bug