[js笔记整理]面向对象篇

Posted 庞永胜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[js笔记整理]面向对象篇相关的知识,希望对你有一定的参考价值。

一、js面向对象基本概念

对象:内部封装、对外预留接口,一种通用的思想,面向对象分析;

1、特点

(1)抽象

(2)封装

(3)继承:多态继承、多重继承

2、对象组成

(1)属性:

  任何对象都可以添加属性,(如右侧示例可弹出arr.a为12 var arr=[1,2,3];arr.a=12;alert(arr.a) 

  全局变量是window的属性,

1 <script>
2 window.a=12;
3 window.onload=function()
4 {
5     alert(a);
6 }
7 </script>

(2)方法:

  任何对象都可以添加方法;

  全局函数为window的自定义方法;

  事件函数为系统自动调用的方法;

(以下代码为为数组对象arr添加属性a和方法show,调用方法show弹出a属性)

<script>
var arr=[1,2,3];
arr.a=12;
arr.show=function()
{
    alert(this.a);
} arr.show;
</script>

3、this的使用

  this表示拥有当前方法或者属性的对象;

4.new的使用

 (1)作用:示例化当前类为对象;

 (2)动作流程:指向一个新创建的对象,并返回该对象;

 (3)任何方法前都可以加new;

5、类和对象

(1)对象:类的实例化

(2)类:对象的模板

二、创建类

1、基本方法

(1)创建空对象  var obj=new Object();
(2)添加属性   obj.name="pangyongsheng"
(3)添加方法   obj.shuwname=function(){ alert(this.name)}
(4)调用属性   obj.name;
(5)调用方法   obj.showname();

2、构造函数:

以上基本方法可以封装成为一个函数--构造函数

 1 function createObjiect(name,qq)
 2 {
 3     var obj=new Object();
 4 
 5     obj.name=name;
 6     obj.qq=qq;
 7     obj.showname=function()
 8     {
 9         alert(obj.name);
10     }
11     retun obj;
12 }

采用构造函数创建对象:

var aa=creatObject("panyongsheng",820568018);

上述方法存在的问题和缺点:

(1)未采用new进行实例化-

(2)不同对象方法重复,浪费资源

3、改进

(1)采用new创建构造函数,实现添加对象的属性

1 function CreateClass(a,b,c...)
2 {
3     this.a=a;
4     this.b=b;
5     ...    
6 }

(2)采用原型添加方法
CreatClass.prototype.fn1=function(){}
CreatClass.prototype.fn2=function(){}
...

----------------------------------------------------------------------------

关于原型:同时为多个对象添加相同的方法->提高资源重用

以为数组添加求和方法为例:

(1)对特点的数组添加sum方法,只能在当前数组使用

var arr1=[1,3,5,7];
var arr2=[2,4,6,8];
arr1.sum=function()
{
    var result;
    for(var i=1;i<this.length;i++)
    {
        result+=this[i];
    }
}
arr1.sum1.sum();
arr1.suml.sum();    //报错

(2)通过原型添加sum方法,任何数组均可以使用该方法

 1 Array.prototype.sum=function()
 2 {
 3     var result;
 4     for(var i=1;i<this.length;i++)
 5 
 6     {
 7         result+=this[i];
 8     }
 9 }
10 var arr1=[1,3,5,7];
11 var arr2=[2,4,6,8];
12 arr1.sum1.sum();
13 arr1.sum2.sum();

 

----------------------------------------------------------------------------

 

以上是关于[js笔记整理]面向对象篇的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段9——JS中的面向对象编程

[js笔记整理]正则篇

前端开发--面试题整理(JS篇)

JS 设计模式 (待整理)

Python学习笔记12(面向对象进阶)

C语言对象编程第一弹:封装与抽象