Javascript

【2021-09-28】JS学习(七)--面向对象程序设计

本文主要是介绍【2021-09-28】JS学习(七)--面向对象程序设计,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

11.1 String类型

  • length属性 获取字符串的字符数量

  • charAt(i) 返回给定位置的字符

  • charCodeAt(i) 返回给定位置字符的编码

  • indexOf("x") 从前往后找, 查找指定字符所在位置 如果字符不存在,返回-1 有一个数字类型的可选参数,代表 从哪个位置开始查找

  • lastIndexOf("x") 从后往前找,查找字符所在位置

  • concat() 作用:将字符串进行拼接的方法,将一个或多个字符串拼接起来,返回值是新字符串,大部分情况使用 +去代替该方法

    调用者:str1

    参数:str2

    返回值:str1+str2

  • slice() 截取指定字符串 [start,end) 不改变原始值,所以注意使用新变量接受结果

  • substr()

    参数:开始位置from 截取长度length

    返回值:字符串

    不改变原始值

  • substring()

  • trim() 删除字符串前后空格

  • toUpperCase() 大写

  • toLowerCase() 小写

var s = "hello";
console.log(s.length);
console.log(s.charAt(1));
console.log(s.charCodeAt(1));
console.log(s.indexOf("q"));
console.log(s.LastIndexOf("e"));
console.log(s.indexOf("e",2));
​
var s2 = ",world";
console.log(s.concat(s2));//hello,world
var s = "helloworld";
console.log(var s1 =s.slice(3,7));//lowo
​
console.log(s.substr(3,7));//lowworld
​
var s = "helloworld";
console.log(s.substring(3,7));//lowo
​
var s = " hello world ";
console.log(s.trim());
​
var s = " hello world ";
console.log(s.toUpperCase());//HELLO WORLD 
​
var s = "HELLO WORLD"
console.log(s.toLowerCase());//hello world


11.2 Math对象

常用方法

Math.min() 作用:返回一组数中的最小值

Math.max() 作用:返回一组数中的最大值

console.log(Math.min(10,9,5,4,2,1,3,251));//1
console.log(Math.max(10,9,5,4,2,1,3,251));//251

Math. ceil() 向上舍入

Math. floor() 向下取舍

console.log(Math.ceil(10.41));//11
​
console.log(Math.floor(10.41));//10
console.log(Math.floor(10.91));//10

Math.round() 四舍五入

console.log(Math.round(10.91));//11
console.log(Math.round(10.41));//10

Math.random() 返回值是在(0,1)的一个随机数

console.log(Math.random());//随机数

其他方法

  • abs(num) 绝对值

  • exp(num) 返回值Math.E的num次幂

  • log(num) 返回num的自然对数

  • pow(num,power) 返回num的power次幂

  • .........

11.3 Date对象

方法

  • getFullYear() 年份

  • getYear()

  • getMonth() 月份 0-11

  • getDate() 返回 日期中对象的几号

  • getDay() 星期几 周日 0 周一--周六 1-6

  • getHours() 返回小时 0-23

  • getMinutes() 返回分钟数 0-59

  • getSeconds() 返回秒数 0-59

  • getMilliseconds() 返回毫秒数

  • getTime() 时间戳 1970-01-01 00:00:00到现在

  • toDateString()

  • toTimeString()

  • toISOString()

  • toJSON()

  • toString()

var str = "2021-09-02";
var date = new Date(str);
console.log(date);//当前标准时间
colsole.log(date.getFullYear());
console.log(date.getMonth());//console.log(date.getMonth() + 1);
console.log(date.getDate());
console.log(date.getDay());
console.log(date.getHours());
console.log(date.getMinutes());
console.log(date.getSeconds());
console.log(date.getMilliseconds());
​
console.log(date.getTime());
colsole.log(date.getYear());
console.log(date.valueOf());
​
console.log(date.toDateString());
console.log(date.toTimeString());
​
console.log(date.toISOString());
console.log(date.toJSON());
console.log(date.toString());

案例 日期:2021-09-02 10 :25 :40

console.log(dateFMT(new Date()));
function dateFMT (date) {
  // var date = new Date();
  var y = date.getFullYear();
  var m = date.getMonth() + 1 < 10 ? "0" + (date.getMonth() + 1) : date.getMonth() + 1;
  var d = date.getDate().toString().padStart(2, "0");
  var hh = date.getHours().toString().padStart(2, "0");
  var mm = date.getMinutes().toString().padStart(2, "0");
  var ss = date.getSeconds().toString().padStart(2, "0");
  return y + "-" + m + "-" + d + " " + hh + ":" + mm + ":" + ss;
}
var moment = require("moment");
​
var date = new Date();
var result = moment(date).format("YYYY-MM-DD hh:mm:ss");
console.log(result);
​
var date = new Date();
console.log(date.getTime());
var thisTime = date.getTime()
var time = moment(thisTime).format("YYYY-MM-DD hh:mm:ss");
console.log(time);

11.4 工厂模式

因为使用普通的字面量创建多个对象时,会产生大量的重复代码,为了解决这个问题,我们引入工厂模式。

通过将创建对象的方法封装起来,避免重复代码产生。

function newPerson(name,age,gender){
    var p =new Object();
    p.name = name;                                                                      
    p.age = age;
    p.gender = gender;
    p.sayName = function(){
        console.log(this.name);
    }
}
var p1 = newPerson('zhangsan',12,'男');
var p2 = newPerson('lisi',15,'女');
console.log(p1);
console.log(p2);
​
p1.sayName();
p2.sayName();
​
function newDog(name,age,gender){
    var d = new Object();
    d.name = name;
    d.age = age;
    d.gender = gender;
    d.sayName = function(){
        console.log("汪汪名字是" +this.name);
    }
    return d;
}
var d1 = newDog("旺财",1,"男");
console.log(d1);
d1.sayName();//汪汪的名字是旺财
​
console.log(typeof p1);//obj
console.log(typeof d1);//obj

工厂模式创建对象的缺点:创建出来的所有对象类型都是object,没有办法去识别对象到底是Person还是Dog。

11.5 构造函数模式

function newPerson(name,age,gender){
    this.name = name;
    this.age = age;
    this.gender = gender;
    this.sayName = function(){
        console.log(this.name);
    }
}
var p1 = new Person('terry',23,'男');
p1.sayName();
console.log(p1);
console.log(typeof p1);

构造函数问题:

  1. 可以区分每个类

  2. 每个方法都要在每个实例重新创建一遍,没有必要

  3. 虽然可以将方法提取出来,提到全局范围内,然后将引用传递给对象中的函数属性,但是全局函数太多的话,体现不了类的封装性。

11.6 原型模式

function Person(){

};

原型模式特点

  1. 对于共享属性 共享函数使用这种方式创建是非常合适的

  2. 对于引用类型的数据不太好

function Person(){};
Person.prototype.name = "zhangsan";
Person.prototype.age = 12;
Person.prototype.gender = "男";
Person.prototype.sanyName = function(){
    console.log(this.name);
}
var p1 = new Person();
p1.name = "lisi";
p1.likes.push('打

	
这篇关于【2021-09-28】JS学习(七)--面向对象程序设计的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!