JS(面向对象)

本文详细介绍了JavaScript中的基本数据类型及其包装类型,包括String、Number、Boolean的操作方法。探讨了Math对象和Date对象的常用方法,并概述了四种对象创建模式:工厂模式、构造函数模式、原型模式和组合模式。同时,讲解了JavaScript中的继承机制,包括原型链继承、构造函数继承和组合继承。最后,提到了instanceof操作符的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

基本数据类型

基本包装类型

1、String

面试题:(基本包装类型)后台js会自动执行

2、Number

3、Boolean

 String.prototype的属性和方法

Math对象

Date对象

四种模式

批量创建对象,封装创建对象的函数,提高代码复用性。

工厂模式

        创建出来的对象都是Object类型,无法区分对象种类。

        可以将函数声明成全局变量解决方法空间浪费,但是会产生方法冗余问题

构造函数模式

        可以区分对象种类

        方法冗余

面试题:使用了new操作符js自动帮做了这些事情

原型模式

        解决了方法冗余

        所有实例共享的属性和方法,但是私有属性得不到维护

组合模式

继承

1、原型链继承

子构造函数的原型指向父构造函数的实例

2、构造函数继承、经典继承

在子类构造函数内调用父类构造函数

3、组合继承(原型继承+经典继承)

4、instaceof:检测是否是构造函数的实例


基本数据类型

变量和值保存在栈区,没有方法和属性可以调用

基本包装类型

为了便于操作基本类型值,ECMAScript提供了3个特殊的引用类型Boolean, Number, String,每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象,从而可以调用一些方法操作这些数据。

1、String

var str='hello';

str.split("");

面试题:(基本包装类型)后台js会自动执行

1.创建一个String类型的一个实例--自动装箱

        var str=new String();  //将str基本数据类型包装成了一个String引用类型

2.在实例上调用指定的方法

        str可以调用String.prototype.方法

3.销毁这个实例 --自动拆箱

        str=null;  //回归基本数据类型,String类型变成了string类型,但还可以访问到

2、Number

3、Boolean

 String.prototype的属性和方法

str.length               返回字符串长度
str.charAt(index)            返回指定位置i的字符
str.charCodeAt(index)        返回指定位置i的字符编码
str.concat(str1)             连接字符串
str.slice(开始位置,结束位置)      截取并返回字符串,不包括结束位置的字符
str.substring(开始位置,结束位置)  截取并返回字符串,不包括结束位置的字符
str.substr(开始位置,截取字符个数)截取字符串
str.trim()               删除前置以及后置中的所有空格,返回结果
str.toLowerCase()       转换为小写
str.toUpperCase()       转换为大写
str.indexOf('x')  

从前往后查找指定字符所在第一个位置

空格也算一个字符

str.lastIndexOf('x')       从后往前查找字符串所在第一个位置,可以有第二个参数,代表从字符串中哪个位置开始查找。

Math对象

Math.min(num,num,num)求一组数(整数或小数,数组不行)中的最大值
Math.max(num,num,num)求一组数中的最大值
Math.ceil(num)向上取整(3.1-4)
Math.floor(num)向下取整(3.9-3)
Math.round(num)四舍五入
Math.random()返回大于0小于1的一个随机数 [0,1)
Math.random()*10返回大于0小于10的一个随机数 [0,10)

parseInt(Math.random()*10)

返回大于0小于10的一个随机整数 [0,10)

abs(num)返回num绝对值
exp(num)       返回Math.E的num次幂
log(num)       返回num的自然对数
pow(num,power)   返回num的power次幂
sqrt(num)       返回num的平方根
scos(x)           返回x的反余弦值
asin(x)           返回x的反正弦值
atan(x)           返回x的反正切值
atan2(y,x)       返回y/x的反正切值
cos(x)           返回x的余弦值
sin(x)           返回x的正弦值
tan(x)           返回x的正切值

Date对象

var date=new Date();

date.getFullYear()返回年份  如2020
date.getMonth()           返回日期中的月份数,返回值0(1月)-11(12月)
date.getDate()           返回是日期对象中的几号
date.getHours()           返回日期中的小时
date.getMinutes()      返回日期中的分钟数
date.getSeconds()      返回一个日期的秒数
date.getDay()          返回日期中的星期几
date.getMilliseconds()   返回日期中的毫秒数
date.getTime()           将一个日期对象以毫秒形式返回(从1970开始)

四种模式

批量创建对象,封装创建对象的函数,提高代码复用性。

工厂模式

缺点:

        创建出来的对象都是Object类型,无法区分对象种类

        创建多少个实例,对象中的函数就在堆区创建多少个引用地址,造成空间浪费

        可以将函数声明成全局变量解决方法空间浪费,但是会产生方法冗余问题

构造函数模式

优点:

        可以区分对象种类

缺点:

        方法冗余

面试题:使用了new操作符js自动帮做了这些事情

①创建了对象 obj

②this指向这个对象 this---obj

this.name=name;等同于obj.name=name;

③执行函数体

④返回这个对象 return obj

原型模式

优点:

        解决了方法冗余

        因为每个函数都有一个属性:prototype(原型属性),这个属性是一个指针,指向一个对象

缺点:

        所有实例共享的属性和方法,但是私有属性得不到维护

原型模式不单独使用,构造函数中什么都不放,将所有的属性和方法都放到原型对象中

组合模式

构造函数模式+原型模式,构造函数中放实例私有的属性,构造函数原型对象中放公共属性和方法

继承

1、原型链继承

子构造函数的原型指向父构造函数的实例

Person.prototype={};  //Person.prototype=new Object();

 继承规则:

        实例调用属性和方法

        1、实例自身有先调用自身

        2、如果没有,调用构造函数原型对象中的属性和方法

        3、如果没有,调用父类构造函数原型对象中的属性和方法

2、构造函数继承、经典继承

在子类构造函数内调用父类构造函数

function Dog(){

        Animal.call();

}

3、组合继承(原型继承+经典继承)

 

4、instaceof:检测是否是构造函数的实例

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值