一、创建对象
- 对象的属性为键值对,有属性和行为(方法)两个组成
var dog = {
feet: 4,
color: 'yellow',
run: function(){
console.log('小狗会跑路')
},
eat: function(){
console.log('修勾会吃东西')
}
}
console.log(this.dog); // {feet: 4, color: 'yellow', run: ƒ, eat: ƒ}
- 通过自定义构造函数进行创建
- 固定参数应用场景
- 明确知道对象属性
- 位置要严格对应
- 固定参数应用场景
<script>
// 自定义构造函数
function Woman (name,sex,age) {
this.name = name;
this.sex = sex;
this.age = age;
}
var woman = new Woman('dada','woman','18');
console.log(woman); /*Woman {name: 'dada', sex: 'woman', age: '18'}*/
</script>
- 对象类型参数
- 维护、使用方便
- 易于理解
<script>
// 自定义构造函数
function Man(obj){
this.name = obj.name;
this.age = obj.age;
}
var man = new Man({name:'dahai',age:12});
console.log(man); //Man {name: 'dahai', age: 12}
</script>
二、对象操作
- 通过"."创建属性
- 通过delete运算符
- 通过".“运算符可以访问,对象属性”[]“操作符访问,”[]"⾥⾯写字符串
<script>
var dog = {
feet: 4,
color: 'yellow',
run: function(){
console.log('小狗会跑路')
},
eat: function(){
console.log('修勾会吃东西')
}
}
// 新增属性
// 1. . 赋值
dog.name = '大黄';
console.log(dog); //{feet: 4, color: 'yellow', name: '大黄', run: ƒ, eat: ƒ}
// 2. [] 增加属性
dog['tail'] = 'short'; //{feet: 4, color: 'yellow', name: '大黄', run: ƒ, eat: ƒ, tail:'short'}
// 删除属性
delete dog.tail;
console.log(dog); //{feet: 4, color: 'yellow', name: '大黄', run: ƒ, eat: ƒ}
</script>
- 访问自身属性
- 通过this关键字访问自身属性
new作用
- 如果没有new,直接调用构造函数
- 构造函数的this指向的是window对象
<script>
function Man(obj){
this.name = obj.name;
this.age = obj.age;
console.log(this); // Window对象
}
var man =Man({name:'dahai',age:12}); // undefined,因为构造参数没有返回值
</script>
- 作用
- 创建一个新的空的对象
- 将构造函数的作用域赋值给对象(即this指向新对象)
- 执行构造函数(即为新的对象添加属性)
- 将这个新对象进行返回
<script>
function Man(obj){
// this={};
this.name = obj.name;
this.age = obj.age;
// return this;
}
var man =new Man({name:'dahai',age:12}); // undefined,因为构造参数没有返回值
console.log(man); //Man {name: 'dahai', age: 12}
</script>