javascript近一周的面向对象学习总结

前言


从清明放假回来,整个人的状态时好时坏。
不过之前也不是很好!
关于上课讲的一些知识点,勉勉强强能记住一些。
javascript 的学习现在有点迷茫,以致使我不快乐。
不过,这终究是个过程!
谁叫咱还是前端菜鸟呢...
废话说完了,赶紧总结!!!

1.面向对象,咱先入个门吧


  1. 面向对象是一种思维方法
  2. 面向对象是一种编程方法
  3. 面向对象并不只针对某一种编程语言

2.面向对象的创建


2.1 通过字面量的方式进行创建

2.2 通过new 来创建一个对象

2.3 工厂模式

封装一个函数来实现


2.4 构造函数

构造函数的目的就是用来创建对象!!!
当通过new 函数()的方式使用的时候,这个函数就叫构造函数。
*通过函数名的 首字母大写 来和 普通函数 区分
构造函数的优点:属性不共享

缺点:方法不共享,对所有像p1 这样新建的对象来说,它们的方法应该是一份就够了,没必要每人一份,造成内存的浪费和拉低性能。


2.5 原型模式

原型的优点:方法共享
prototype 指向这个函数的原型对象
constructor 指向这个函数



缺点: 属性共享
如果一个对象对原型的属性进行了修改,则会反映到所有对象上

例如:

p1.prototype.name = "李四";
那么   p2.name = "李四";
       p3.name = "李四";
       ...
2.6 组合模式

我的理解为: 原型 + 构造

构造函数的优点:属性不共享
原型的优点:方法共享
所以组合模式的优点: 属性不共享,方法共享
1.在构造函数内部添加属性 2. 在原型上添加方法。


2.7 动态原型

优点:属性的方法都封装在构造函数中,又保持了同时使用构造函数和原型的优点


3.对象的属性和方法


3.1 添加对象的属性和方法
 p.name = "李四";
 p.eat = function(){
      console.log("吃")
 };
3.2 删除对象的属性和方法
delete p.name;
delete p.eat;
3.3访问对象的属性和方法
alert(person.name);  // 访问person对象的 name属性值
person.age = 30;  //修改person对象的 age 属性
person.eat();  //既然是调用方法(函数) 则一定还要添加 ()来表示方法的调用
alert(person["name"]);  //
3.4 for ...in遍历对象的属性

for (p in person){
alert(p + ":" + person[pn]);
}

4.判断对象的类型


3.1 typeof

一般用来测试简单数据类型和函数的类型。如果用来测试对象,则会一直返回object,没有太大意义。

3.2 instanceof

用来测试一个对象是不是属于某个类型。结果为boolean值。

3.3 isPrototypeOf( 对象 )

这是个 原型对象 的方法,参数传入一个对象,判断参数对象是不是由这个原型派生出来的。 也就是判断这个原型是不是参数对象原型链中的一环。

二、原型


1.函数的原型对象 prototype

javascript近一周的面向对象学习总结_第1张图片
43031030.png

2.constructor

指向函数

3. __proto__ (左右各两个下划线)

用来访问属性
访问方式:p1.__proto__
这个属性指向了构造函数的原型对象

6.


7.


8.


你可能感兴趣的:(javascript近一周的面向对象学习总结)