JavaScript利用sort根据对象值排序是怎么实现的



var arr = [{
        'name': 'abc',
        'age': 20
    },
    {
        'name': 'cde',
        'age': 19
    },
    {
        'name': 'dfc',
        'age': 25
    },
    {
        'name': 'bde',
        'age': 21
    },
]

function compare(property) {
    return function (a, b) {
        return (a[property] - b[property])
    }
}

console.log(arr.sort(compare('age')))

compare函数不是只接收了属性名吗,为什么compare函数返回的function函数里面a和b参数能够获取到arr里面的每一个对象?

我的想法:
compare底层用的冒泡,每次交换出一个最大值。

a和b分别是当前项和下一项。

为正就不动,负数就交换。