面向对象的程序设计

1.内置对象及内置函数

1.1.基本包装类型

在 ES 中,数据的分类分为基本数据类型和引用类型。

按照最新 ES 标准定义,基本数据类型(primitive value)包括 Undefined, Null, Boolean, Number, Symbol, String。

为了便于操作基本类型值,ECMAScript提供了3个特殊引用类型(基本包装类型):Boolean, Number, String。

基本包装类型,和其他引用类型一样,拥有内置的方法可以对数据进行额外操作。

每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对

象,从而可以调用一些方法操作这些数据。

//包装器函数
/**
 * 特殊引用数据类型 Boolean  Number  String 
 * 1.js自动将基本数据类型转为特殊引用数据类型 String---自动装箱
 * 2.实例可以访问属性和方法 
 * 3.调用js将特殊引用数据类型转为基本数据类型string---自动拆箱
 * 
 */
var str = 'hello';
var res = str.split('');
console.log(res,str.length,str.constructor);


// var str = new String('hello');
// str.split('');
// str = null;

增加对应的包装对象的原型方法 

// 想要给基本数据类型添加方法或者属性 
var str = 'hello';
String.prototype.last = function(){
  // charAt 返回指定位置所对应得字符 
  return this.charAt(this.length-1);
};
console.log(str.last());


var str = new String('hello');
// 添加属性 和 方法 
str.name = 'HI';
str.foo = function(){
  console.log('我是foo');
}
console.log(str);

1.1.1.Boolean类型

 Boolean 类型没有特定的属性或者方法。一般直接将Boolean当做一个工具方法来使用。

1.1.2.Number类型 

 

/**
 * Number引用类型方法和属性
 */
var num = 10;
console.log(num.toString());
console.log(num.toLocaleString());
console.log(num.toFixed(2));
console.log(num.toExponential());
console.log(num.toPrecision(2));
console.log(num.valueOf());

1.1.3.String类型

/**
 * charAt 参数:index  返回值:返回指定索引位置对应的字符
 * charCodeAt 参数:index  返回值:返回指定索引位置对应的字符得Unicode编码
 */
var str = 'hello';
console.log(str.charAt(3));
console.log(str.charCodeAt(3));

 

/**
 * 字符串操作方法:
 * concat 拼接字符串 返回值:返回的是拼接好的字符串
 */
var str = 'he';
var str1 = 'll';
var str2 = 'o';
var res = str.concat(str1,str2);
console.log(res);

/**
 * 截取字符串字符 
 * 1.substring 参数:start end(不包含)不可以为负数 返回值:从start截取到end位置字符(不包含)
 * 2.substr  参数:start length  返回值:从start位置开始截取length个字符
 * 3.slice  参数:start end(不包含)可以为负数 返回值:从start截取到end位置字符(不包含)
 */
var str = 'hello world';
console.log(str.slice(3,7));//截取从索引3到索引7位置字符(不包含)
console.log(str.slice(-3,-1));//截取从倒数第三项到倒数第一项位置字符(不包含)

console.log(str.substring(3,7));//截取从索引3到索引7位置字符(不包含)

console.log(str.substr(3,7));

/**
 * indexOf 从头开始查找字符
 * lastIndexOf 从末尾开始查找字符
 * 参数:查找字符 start 返回值:返回的第一次查找到字符得索引或者-1
 */
var str = 'hello world';
console.log(str.indexOf('l',4));
console.log(str.lastIndexOf('o',6));

/**
 * 大小写转换方法 
 * toLowerCase 将字符串转为小写
 * toUpperCase 将字符串转为大写
 */
console.log('HEELO'.toLowerCase());
console.log('hello'.toUpperCase());
console.log('hello'.toLocaleUpperCase());
console.log('HEELO'.toLocaleLowerCase());

/**
 * 字符串模式匹配得方法 可以配合正则表达式
 * match 参数:要匹配得字符 返回值:返回的是一个数组或者null
 * replace 参数:旧字符/正则表达式 新字符 返回值:返回的是替换好的新字符串
 * search 参数:要查询得字符 返回值:返回查找到得字符所对应索引或者-1
 * split 参数('分割字符') 返回值:将字符串分割好的数组
 */
/**
 * 创建正则表达式
 * 1.构造函数 RegExp()
 * 2.直接字面量  /表达式/修饰符 
 * 修饰符 i ignore忽略大小写 g global 全局匹配  m mutiline多行匹配
 */
// var reg = new RegExp('l','igm');
// var reg = /l/igm;
var str = 'hello world';
console.log(str.match('y'));
console.log(str.replace('l','m'));
console.log(str.replaceAll('l','m'));//将所有旧字符全部替换为新字符
console.log(str.replace(reg,'m'));
console.log(str.search('o'));
console.log(str.split(' '));

 1.2.Math对象

// Math对象方法 
console.log(Math.min(1,3,2,4,5,6),'获取一组数中最小数');
console.log(Math.max(1,3,2,4,5,6),'获取一组数中最大数');
console.log(Math.ceil(1.1),'向上取整');
console.log(Math.floor(1.9),'向下取整');
console.log(Math.round(2.1),'四舍五入');
console.log(Math.round(2.9),'四舍五入');
console.log(Math.random(),'随机数0-1之间小数');//[0,1)


var arr = ['甄姬','虞姬','蒙牙','上官婉儿','典韦','韩信'];
function Random(arr){
  // 生成随机索引  0-6之间 
  var index =  parseInt(Math.random() * arr.length);
  console.log(arr[index]);
}
Random(arr)

 1.3.Date对象

//date对象
// 1.引入momentjs工具库  commonjs 模块化规范 
var moment = require('moment');
console.log(moment,'moment对象');
// var now = new Date();//在不同环境下获取时间有差异
// var now = new Date('2023-8-22 14:34');
var now = new Date();//在不同环境下获取时间有差异
console.log(now.toString());
console.log(now.toLocaleString());
console.log(now.getFullYear(),'获取当前年份');
console.log(now.getMonth() + 1,'获取当前月份');//0-11
console.log(now.getDate(),'获取月份所对应天数');
console.log(now.getHours(),'获取当前小时');
console.log(now.getMinutes(),'获取当前分钟数');
console.log(now.getSeconds(),'获取当前秒数');
console.log(now.getDay(),'获取一周中几天');//0-6
console.log(now.getTime());//格林威治时间毫秒数 13位时间戳 

console.log(moment(now.getTime()).format('YYYY-MM-DD:HH:mm:ss'));

2.扩展库

a.Moment.js

​​​​​​​b.lodash

// 引入lodash工具库 
// var _ = require('lodash');
// console.log(_);
// var obj = {
//   name:"zhangsan"
// };
// var obj1 = _.cloneDeep(obj);//深拷贝 
// console.log(obj,obj1,obj1===obj);

// var arr = [1,2,3,4,5,6];
// console.log(_.chunk(arr,2));

// compact 过滤假值将真值放在数组中 
// var arr = [0,false,'',10,null,undefined,'hello'];
// console.log(_.compact(arr));


// drop 删除数组元素 指定删除n
// console.log(_.drop([1,2,3,4,5],2));
// console.log(_.indexOf([1,2,3,4,5],3));
// console.log(_.uniq([1,2,2,1,3]));

// 作业:尽可能使用学过数组api对数组进行去重 [1,2,3,2,3]
// var arr = [1,2,3,2,3];
// function unique(arr) {
//     //循环前一个数
//     for (let i = 0; i < arr.length; i++) {
//         //循环后一个数
//         for (let j = i+1; j < arr.length; j++) {
//             //如果前一项和后一项重复 删除后一项 修正下标
//             if (arr[i]===arr[j]) {
//                 arr.splice(j,1);
//                 j--;
//             }
            
//         }
        
//     }
//     return arr
// }
// var res = unique(arr)
// console.log(res);

/**
 * 利用indexOf去重 或者 lastIndexOf去重
 */
var arr = [1,2,3,2,1,3,4];
function unique(arr) {
    var newArr = [];
    for (let i = 0; i < arr.length; i++) {
        //如果不存在newArr中 将添加newArr数组
        if (newArr.indexOf(arr[i]===-1)) {
            // newArr.push(arr[i])
            newArr[newArr.length]=arr[i]
            
        }
        
    }
    return newArr
}
var res = unique(arr);
console.log(res);

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值