1.封裝hasPubProperty公有屬性
Object.prototype.hasPubProperty = function (key) {
if ((key) in this && !this.hasOwnProperty(key)) {
return true;
}
return false;
}
復(fù)制代碼
2.封裝myPop,去掉末尾項(xiàng)
Array.prototype.myPop = function () {
let temp = this[this.length - 1];
this.length--;
return temp;
}
復(fù)制代碼
3.封裝myUnique數(shù)組去重
Object.prototype.hasPubProperty = function (key) {
var obj = {};
for (var i = 0; i < this.length; i++) {
if (obj.hasOwnProperty(this[i])) {
this.splice(i, 1);
i--;
} else {
obj[this[i]] = this[i]
}
}
}
復(fù)制代碼
4.封裝myPop去除最后數(shù)組一項(xiàng)
Array.prototype.myPop = function () {
let temp = this[this.length - 1];
this.length--;
return temp;
}
復(fù)制代碼
5.封裝myPush在末尾項(xiàng)增加
Array.prototype.myPush = function () {
var l = ary.length;
for (var i = 0; i < l; i++) {
this[this.length] = ary[i];
}
return this;
}
復(fù)制代碼
6.封裝myCall方法等同于call
Function.prototype.myCall = function myCall(context, ...arg) {
context = context || window;
let a = Symbol();
context[a] = this;
let res = context[a](...arg);
delete context[a];
return res;
}
復(fù)制代碼
7.封裝myApply方法等同于apply
Function.prototype.myApply = function myApply(context, arg) {
arg = arg || [];
context = context || window;
let a = Symbol();
context[a] = this;
let res = context[a](...arg);
delete context[a];
return res;
}
復(fù)制代碼
8.封裝myBind方法等同于bind
Function.prototype.myBind = function (context, ...arg) {
var _this = this;
return function (...ary) {
return _this.apply(context, arg.concat(ary))
}
}
復(fù)制代碼
9.封裝myNew方法等同于new
function myNew(classN, ...arg) {
var obj = {};
obj.__proto__ = Person.prototype;
var res = Person.call(obj, ...arg)
return typeof res === 'object' ? res : obj;
}
復(fù)制代碼
10.封裝myInstance方法等同于instanceof
function myInstance(temp, classN) {
let str = typeof temp;
if (str !== 'Object' && str !== 'Function') return false;
var left = temp.__proto__,
right = classN.prototype;
while (left) {
if (left === right) return true;
left = left.__proto__;
}
return false
}
復(fù)制代碼
11.封裝plus和minus方法
Number.prototype.plus = function (a) {
return this + a;
}
Number.prototype.minus = function (a) {
return this - a;
}
復(fù)制代碼
12.封裝一個(gè)判斷數(shù)據(jù)類型的方法getType
Object.prototype.getType = function () {
var str = this.constructor.toString();
str = str.slice(9, str.indexOf('('));
return str.toLowerCase();
}
復(fù)制代碼
13.封裝myReverse方法等同于reverse
Array.prototype.myReverse = function () {
for (var i = 0; i < this.length / 2; i++) {
let temp = this[i];
this[i] = this[this.length - 1 - i];
this[this.length - 1 - i] = temp;
}
return this;
}
復(fù)制代碼
14.獲取數(shù)組中的最大值
Array.prototype.max = function () {
// 三種任選其一
return this.sort((a, b) => b - a)[0];
return Math.max(...this);
return Math.max.apply(Math,this);
}
復(fù)制代碼
15.求數(shù)組中的平均值
Array.prototype.average = function(){
return eval(this.join('+'))/this.length;
}






