一、面向对象面向过程的区别
1、什么是js对象
js对象:属性和方法的集合,js所有数据都可以看成对象。
面向过程:专注于过程,注重过程,参与每一个步鄹。
面向对象:只关注结果,不在意细节。
2、各自优缺点
面向过程:
缺点:不适合大型项目,代码可维护性低,可扩展性比较低。
优点:不需要实例化对象,性能好点
面向对象:
缺点:
优点:代码可维护性高,可扩展性高。
课外扩展
typeof检查变量的类型,返回一个字符串,例如:string、number、boolear等等。
instanceof 判断一个实例是否属于某种类型;
a instanceof b 用于判断a是否是b的实例,用于继承关系;
c instanceof Array 判断一个c是否是一个数组;
二、面向对象创建方式
1、字面量方式
var people = {属性名:属性值,方法名:方法体}
var perple = {
name : '达康',
say:function(){
函数体
}
}
访问对象属性方法的方式
obj.name obj['name'];
obj.say();
对象添加属性 属性名:属性值
people.phone = '12345566';
删除 delete(对象:属性名)
2、实例化对象
var obj = new Object();
obj.name = '达康'
3、工厂模式
function Car(){
//实例化对象
var obj = new Objcet ;
obj.name = '比亚迪';
obj.age = '1.8T;
obj.run = function (){
}
//返回对象
return obj;
}
Car() //调用方法
var obj1 = Car();
4、构造函数模式
function Phone (){
this.brand = '华为',
this.ca = function(){
console.log('9999)
}
}
//实例化
var obj = new Phone();
构造函数模式和工厂模式的区别
构造函数:
1、构造函数模式内部不需要实例化对象,不需要返回对象,
2、在函数外部使用new实例化
3、函数内部使用this关键字定义属性、方法;
工厂模式:
1、函数内部需要实例化对象,需要返回值
2、函数内部使用实例化对象的变量定义方法属性
3、外部不需要实例化
三、
'.'和'[]'的区别
.访问的属性名必须符合标识符的命名规范,属性名不能使用变量名,不需要加引号'';
[]访问的属性名可以不符合命名规范,属性名可以使用变量名,可以加引号'';
四、对象遍历方法
如果使用for in 遍历对象,只能使用[]访问对象的属性方法
for(key in obj){
obj[key]
}
网友评论