function 完善