instanceof
function myInstanceof (leftVal, rightVal) {
let left = leftVal.__proto__
let right = rightVal.prototype
while(true){
if(left === null){
return false
}else if(left === right){
return true
}
left = left.__proto__
}
}
new
// 1. 隐式的定义一个this
// 2. 最后return this
function Person() {
// var this = {}
this.name = 'yq'
// return this
}
var oP = new Person()
数组去重
[1, 2, 2, 3, 5, 6].unique()
Array.prototype.unique = function () {
var temp = {}
arr = []
len = this.length
for(var i = 0; i < len; i++){
if(!temp[this[i]]){
temp[this[i]] = 'xx' // 随便赋值
arr.push(this[i])
}
}
return arr
}
deepClone
function deepClone(origin, target) {
let arrStr = "[object Array]"
for(let prop in origin) {
if(origin[prop] != null && typeof(origin[prop]) == 'object'){
target[prop] = (Object.prototype.toString.call(origin[prop]) == arrStr) ? [] : {}
deepClone(origin[prop], target[prop])
}else{
target[prop] = origin[prop]
}
}
return target
}