正常情况下,如果我们求数组的值,用到的就是for循环,如果在代码中经常求最大值和最小值的话,会显得代码很乱。所以,就考虑一中最简单的方法求最大值。

使用Math里面自带的max和min方法

function getMaxOfArray(numArray) {
return Math.max.apply(null, numArray);
}

直接调用一下上面的函数,就会返回数组中最大的值。

获取最小的就可以在上面那样修改一下就好

function getMinOfArray(numArray) {
return Math.min.apply(null, numArray);
}

这两个方法就可以直接写到全局当中即可在每个地方都可以使用

有的时候,生成一个自己的库,想直接将方法放置到原生对象上面,但是有的小伙伴发现,放置了以后在使用for in 循环的时候竟然也可以循环出来

如果我就想放置到原生对象上面还不想被循环也就是 “枚举”,那我该肿么办

那就会需要用到原生对象方法Object.defineProperty()方法会直接在一个对象上定义一个新属性,或者修改一个对象的现有属性, 并返回这个对象。

使用这个方法,我们就可以制作和原生方法一样的那种方便易用的方式。

如何使用呢?

将下面的代码运行一次,即可在原生对象上面添加方法,for循环也会查找不到


Object.defineProperty(Array.prototype, 'max', {
writable: false,
enumerable: false,
configurable: true,
value: function () {
return Math.max.apply(null, this);
}
});

Object.defineProperty(Array.prototype, 'min', {
writable: false,
enumerable: false,
configurable: true,
value: function () {
return Math.min.apply(null, this);
}
});

如何使用呢,直接在数组上调用即可

var arr = [54,545,2165,545,56];
console.log(arr.max());
console.log(arr.min());

即可返回最大值最小值