面向对象: 他是一个变成思路,不会改变我们预期的效果;
优点: 使用面向对象,会让代码的复用性大大提高,便于迭代;
特征: 封装、多肽、继承、抽象
例
面向过程:小花去餐厅点餐吃饭
面向对象:小花 --去–吃 餐厅–点餐 小花.去 餐厅.点餐 小花.吃
创建对象的方法
- 字面量
let obj = {
name:"麻子",
sex:"男",
age:"88",
hobby:()=>{
console.log("吃吃吃")
},
}
- 通过构造函数和new 结合使用的普通函数
let obj2 = new object();
- 工厂模式
let obj = {
name:"张三",
sex:"男",
age:"17",
hobby:() => {
console.log("喜欢你")
},
};
function person(name,age,sex,fn){
//1.(形参)运输材料 -->运输材料
//2.创建对象并赋值 -->加工材料
let obj = {}
obj.name = name;
obj.age = age;
obj.sex = sex;
obj.hobby = fn;
return obj; //3.出厂
}
obj.hobby=function (){
console.log("你是一个士兵")
}
let dada = person("小仙","18","男");
console.log(dada.name)
let dada2 =person("大仙","20","男",fn)
console.log(dada2.hobby)
daxian.hobby();
- 构造函数
函数名首字母大写,用来和普通函数进行区别
new运算符也叫new构造器,配合使用的普通函数成为构造函数
function Person(name,age,sex,){
let obj = {}
obj.name = name;
obj.age = age;
obj.sex = sex;
obj.hobby=function (){
console.log("你是一个")
}
return obj;
}
let obj = new Person();
对象的使用
- 通过点语法
console.log(obj.name)
- 通过中括号
let name = "宝贝"
console.log(obj.['name'])
注释:如果通过点语法无法获取到对象中的属性和方法,可以通过中括号来获取
new的作用
- 执行函数
- 隐式创建一个对象
- 把该对象和函数this指向相互绑定
- 可以把this中的属性和方法都加到该对象上
- 函数执行完毕后返回改对象
function tex(name){
this.name = name;
this.age = age; // 这个this指向 obj
this.sex = sex;
this.hobby=function (){
console.log("你是一个")
}
}
// 构造函数 实例化对象
let obj =new txt("a");
console.log(obj.name)