goog.array数组去重方法的使用,求大神讲解

 goog.array.removeDuplicates = function (arr, opt_rv, opt_hasFn){
                var returnArray = opt_rv || arr;
                var defaultHashFn = function (item) {
                    return goog.isObject(item) ? 'o'+goog.getUid(item) : (typeof item).charAt(0) + item;
                }

                var hasFn = opt_hasFn || defaultHashFn;

                var seen = {},cursorInsert = 0,cursorRead = 0;
                while(cursorRead < arr.length){
                    var current = arr[cursorRead++];
                    var key = hasFn(current);
                    if(!Object.prototype.hasOwnProperty.call(seen, key)){
                        seen[key] = true;
                        returnArray[cursorInsert++] = current;
                    }
                }
                returnArray.length = cursorInsert;
            }

函数如上,据说作用是数组去重,求大神讲解,用法或者是原理都行,谢谢啦

https://suppore.cn/tag/Array.prototype用法