JavaScript 面向对象基础总结

面向对象基础总结

第一天:

了解了面向对象与面向过程的区别:面向过程就是将一个问题按需要一步一步往下做。而面向对象是将一个问题看成是多个对象,其中包含了属性与方法,当有需要时,就写出相应的方法与功能,在调用。

学习了如何创建对象://var 对象名={属性或方法}

var p={                 //var  对象名={属性或方法};
  name:"李四",        //属性: 属性名:属性值;
  age:20,               //属性或方法结尾用"," 而不是用";"
}

如何调用对象的属性和方法:对象名.属性名/方法名;

①.点语法: 对象名.方法名/属性名 ②[]:对象名["方法名/属性名""]可以包含变量;


var p={
  name:"李四",
  age:20,
  speak:function(){          //属性为函数时:称为方法
    console.log("吃了");
    }
}
p.speak();              //p.方法名/属性名   点语法
console.log(p.name);
console.log(p["eat"]);  //p["属性名/方法名"]  []中可以为变量(优点)   

如何给对象添加属性:p.新属性或方法

for...in可以用来遍历对象的所有属性。


var p={
  name:"李四",
  age:20,
}
p.sex="男";          //在对象中添加了sex属性
delete p.age;        //delete 是操作符  所以不用()
console.log(p.age);  // undefined   被删除
for(var i in p){
    console.log(i,p[i])     //遍历对象 输出i:属性名  p[i]:值
}

几种创建对象的方法:

new Object( )创建对象:

缺点:重复用一个接口创建多个对象,产生很多重复代码。

解决:工厂模式的诞生


 var p1=new Object();
    p1.name="李四";
    p1.age="20";
    console.log(p);         // name: "李四", age: 20

工厂模型

解决了new Object( )的缺点;


function p(name,age,sex){
  var p1=new Object();
  p1.name=name;
  p1.age=age;
  p1.sex=sex;
}
var p=p("李四",20,"男");       //name: "李四", age: 20, sex: "男";

工厂模式缺点:返回的值都是Object,所以无法识别对象的类型;

构造函数创建的对象:


function Fn(name,age,sex){     //Fn构造函数 一般首字母最好大写
        this.name=name;         //this 指向 new出的f1
        this.age=age;           
        this.sex=sex;
    }
    var f1=new fn("李四",20,"男");     //调用普通函数用new就成了构造函数,当没有创建对象时候, this 指向的是window;
    console.log(f1);    //name: "李四", age: 20, sex: "男";

注意:构造函数中最好不要return ,return 10;(返回无效);return {}:返回的是空对象

猜你喜欢

转载自blog.csdn.net/qq_33744228/article/details/77428916