面向对象
创建自定义对象
var obj1 = {}
var obj2 = {
name: 'falcon',
age: 21,
}
var obj3 = {
name: 'alice',
age: 21,
detail: {
teacher: 'rose',
lesson: 'Chinese',
},
showName: function () {
console.log(this.name)
},
}
for (let v in obj2) {
console.log(obj2[v])
}
function person(name, age, sex) {
var obj = new Object()
obj.name = name
obj.age = age
obj.sex = sex
obj.showName = function () {
console.log(this.name)
}
return obj
}
var obj4 = person('alice', 21, '女')
console.log(obj4)
console.log(typeof obj4)
function fun(name) {
this.name = name
this.sayHi = function () {
console.log(`${name},great!`)
}
}
var obj5 = new fun('jerry')
function demo(name, age, sex) {
name = 'falcon'
age = 21
console.log(name)
var obj6 = new Object()
obj6.sex = sex
return obj6
}
demo()
var res = new demo('alice', 22, '男')
console.log(res.sex)
对象的基本操作
var obj = new Object()
obj.name = 'falcon'
obj.age = 21
obj.sex = '女'
console.log(obj.name)
console.log(obj['sex'])
obj.name = 'alice'
console.log(obj)
delete obj.sex
console.log(obj)
console.log('name' in obj)
for (let v in obj) {
console.log(obj[v])
}
浅拷贝和深拷贝
var obj = {
name: 'falcon',
age: 21,
info: {
lesson: 'Chinese',
},
}
var copyObj = {}
for (let v in obj) {
copyObj[v] = obj[v]
}
copyObj.name = 'alice'
copyObj.info.lesson = 'Math'
console.log(obj)
console.log(copyObj)
var copyObj1 = Object.assign({}, obj)
console.log(copyObj1)
var obj1 = {
name: 'falcon',
age: 28,
}
var obj2 = {
name: 'alice',
age: 22,
city: 'Beijing',
}
var copyObj2 = Object.assign({}, obj1, obj2)
console.log(copyObj2)
var obj3 = {
name: 'alice',
sex: '女',
}
var obj4 = {
name: 'jerry',
lesson: 'Chinese',
hobby: 'eating',
}
var copyObj3 = Object.assign(obj3, obj4)
console.log(copyObj3)
var deepObj = {
name: 'falcon',
age: 21,
color: ['red', 'yellow', 'green'],
info: {
desc: 'hello vue',
},
}
function deepCopy(newObj, oldObj) {
for (let v in oldObj) {
let item = oldObj[v]
if (item instanceof Array) {
newObj[v] = []
deepCopy(newObj[v], item)
} else if (item instanceof Object) {
newObj[v] = {}
deepCopy(newObj[v], item)
} else {
newObj[v] = item
}
}
return newObj
}
var newDeep = {}
console.log(deepCopy(newDeep, deepObj))
newDeep.name = 'alice'
newDeep.color[2] = 'pink'
newDeep.info.desc = 'hello react'
console.log(newDeep)
console.log(deepObj)
对象冻结
var obj = {
name: 'falcon',
age: 21,
color: ['red', 'yellow', 'green'],
info: {
desc: 'hello vue',
},
}
Object.freeze(obj)
obj.name = 'alice'
console.log(obj.name)