const objStr = '对象不能用于for of 中'
const objStr11 = 'for in 能遍历原型上的数据'
const arrStr = 'for in 能遍历原型上的数据,数组的原型也是对象,一般不使用for in遍历数组'
let obj = {
name: 'zhansan',
age: 18
}
Object.prototype.lang = '中文'
for (let i in obj) {
if (obj.hasOwnProperty(i)) {
console.log(obj[i])
}
console.log(i)
}
console.log('-------------------', objStr11)
console.log('-------------------', objStr)
let arr = [11, 22, 33]
for (let i in arr) {
console.log(i, '数组上的index')
if (arr.hasOwnProperty(i)) {
console.log(arr[i])
}
}
console.log('------------------- ', arrStr)
for (let item of arr) {
console.log(item)
}
const zj = '总结:一般情况下不使用for...in方法,因为它会将原型链上的属性值遍历出来,参考in与 hasOwnProperty的差别,而for...of方法因为对象不能使用,一般也只用于数组方法中'
console.log(zj)
console.log('关于call方法的使用')
console.log('------------------- ')
this.name = '我是this中的name'
let obj11 = {
name: '我是obj11中的name',
getname: function () {
console.log(this.name)
}
}
console.log(this, '使用当前this调用obj11中的getname方法')
console.log('------------------- ')
obj11.getname()
console.log('------------------- ')
obj11.getname.call(this)
console.log('------------------- ')
console.log([].slice instanceof Function)
console.log(typeof [].slice)
console.log('------------------- ')
console.log(Math.random)
console.log('------------------- ')
console.log([].concat)
console.log('今天的天气真好,哇哈哈哈')
let arr1 = ['zhangsan', 'lisi', 'zhangsan', 'wangwu', 'lisi']
if (arr1.indexOf('zhangsan') !== -1) {
console.log(arr1.indexOf('zhangsan'))
} else {
console.log('bu存在张三')
}
let ttt = arr1.findIndex((item) => {
return item === 'lisi'
})
console.log(ttt)
console.log('-------------')
if (arr1.includes('wangwu')) {
console.log('存在')
}
console.log('明天是周日,一天就又过去了,马上要失业了')
let strr = 'jintjjnhao'
let arrrr = ['qqq', 'wwww', 'eeee']
console.log(strr.substring(3, -5))
console.log(strr.replace(/j/g, 'n'))
console.log(arrrr.slice())
console.log('我是分割线-------------------')
let fo = {
name: 'zhansan',
age: 18,
kid: {
school: 'kaiming',
skill: "paint"
}
}
let foo = {}
Object.assign(foo, fo)
foo.kid['school'] = 'keweixiaoxue'
console.log(fo, '我是fo对象')
console.log(foo, '我是foo对象')
let fooo = { ...foo }
console.log(fooo, '我是fooo对象')
console.log('我是分割线-------------------')
console.log('我是分割线-------------------')
console.log('我是分割线-------------------')
let deepClone = {
name: 'lisi',
age: 26,
job: {
first: 'dianzi',
second: 'jisuanji'
},
skill: ['learning', 'sing', 'dance']
}
Object.prototype.sex = 'nan'
function deep(tt) {
let obj = Array.isArray(tt) ? [] : {}
for (let i in tt) {
if (tt.hasOwnProperty(i)) {
obj[i] = typeof tt[i] === 'object' ? deep(tt[i]) : tt[i]
}
}
return obj
}
let newobj = deep(deepClone)
deepClone.job['first'] = 'huahua'
newobj.skill[0] = 'daji'
console.log(deepClone, '我是旧对象')
console.log(newobj, '我是深拷贝后的新对象')