小王的js学习笔记(二)

it2023-02-27  80

内置对象及内置函数

基本包装类型

ECMAScript提供了3个特殊的引用类Boolean, Number, String。每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型对象, 从而可以调用一些方法操作这些数据。后台会创建对应的实例(装箱),在实例上调用指定的方法,再销毁这个实例(拆箱)。

不加new是类型转换,返回值是基本数据类型例如string。其他类型–>string。加new是构造函数类型,是真正意义上的包装类型String。包装类型和基本数据类型的转换 基本数据类型–>new 构造函数/new根构造函数装箱–>包装类型 包装类型–>数据类型转换函数toString–>string拆箱–>基本数据类型String类型 String.prototype实例方法 length 属性,获取字符串的字符数量 charAt(i)返回给定位置的字符 charCodeAt(i)返回给定位置的字符的字符编码 indexOf() 从前往后查找指定字符所在位置、 lastIndexOf()从后往前查找字符串所在位置,可以有第二个参数,代表从字符串中哪个位置开始查找。 concat()将一个或多个字符串拼接起来,返回拼接得到的新字符串 使用+拼接字符串时,要注意str = "王招财"; str1 = str+1+2;//王招财12 str2 = 1+2+str;//3王招财 slice() 截取字符串(开始位置,结束位置)不包括结束位置的字符 substr() 截取字符串(开始位置,截取字符个数) substring() 截取字符串(开始位置,结束位置)不包括结束位置的字符 trim() 删除前置以及后置中的所有空格,返回结果 toLowerCase() 转换为小写 toUpperCase() 转换为大写> var str = "nihaowangzhaocai"; > console.log(str.length); 16 > console.log(str.charAt(5)); w > console.log( str.charAt(6),str.charCodeAt(6)); a 97 > console.log( str.indexOf('a')); 3 > console.log( str.lastIndexOf('a')); 14 > console.log( str.lastIndexOf('wa')); 5 > console.log( str.lastIndexOf('wa',10)); 5 > console.log( str.lastIndexOf('wa',4));//从索引4开始从后往前找,找不到返回-1 -1 > console.log( str.lastIndexOf('a')); 14 > var str1 = "123"; > var str2 = str.concat(str1); > str2 'nihaowangzhaocai123' > console.log(str2.slice(10,12)); ha > console.log(str2.substr(10,3)); hao > console.log(str2.substring(10,13)); hao > console.log(str.toUpperCase()); NIHAOWANGZHAOCAI > console.log(str.toLowerCase(str.toUpperCase())); nihaowangzhaocai Math对象,使用的是它的实例方法 比较方法 Math.min() //求一组数中的最小值 Math.max() //求一组数中的最大值 将小数值舍入为整数 Math.ceil() 向上舍入 Math.floor() 向下舍入 Math.round() 四舍五入 随机数 Math.random() 返回范围[0,1)Date 将一个字符串转换为Date对象 Date.prototype.getFullYear() 返回年份 Date.prototype.getMonth() 返回日期中的月份数,返回值0(1月)-11(12月) Date.prototype.getDate() 返回是日期对象中的几号 Date.prototype.getHours() 返回日期中的小时 Date.prototype.getMinutes() 返回日期中的分钟数 Date.prototype.getSeconds() 返回一个日期的秒数 Date.prototype.getDay() 返回日期中的星期几,星期天0-星期六6 Date.prototype.getMilliseconds() 返回日期中的毫秒数 Date.prototype.getTime() 将一个日期对象以毫秒形式返回 Date.now() 获取当前时间的毫秒数 Date.prototype.toString() 将一个Date转换为一个字符串 Date.prototype.toDateString() 以字符串的形式返回一个Date的日期部分 Date.prototype.toTimeString() 以字符串的形式返回一个Date的时间部分 Date.prototype.toLocaleString() 将一个Date转化难为一个本地格式的字符串 Date.prototype.toLocaleDateString() 以本地格式的字符串返回一个Date的日期部分 Date.prototype.toLocaleTimeString() 将一个Date转化为本地的格式的时间部分 Date.prototype.toISOString() 将一个Date对象转换为ISO-8601格式的字符串,返回的字符串格式为yyyy-mm- ddThh:mm:ssZ Date.prototype.toJSON() JSON序列化一个对象 Date.prototype.valueOf() 如果是一个Date对象,将一个Date对象转为毫秒的形式,否则不显示 Date.prototype.getTimezoneOffset() GMT格林威治标准时间与本地时间差,用分钟表示var date = new Date(); > date 2020-10-20T11:31:14.895Z > date.getFullYear(); 2020 > date.getMonth(); 9 > date.getDate(); 20 > date.getDay(); 2 > date.getHours(); 19 > date.getMinutes(); 31 > date.getSeconds(); 14 > date.getMilliseconds(); 895 > date.getTime(); 1603193474895 > Date.now(); 1603193761995 > date.toString(); 'Tue Oct 20 2020 19:31:14 GMT+0800 (China Standard Time)' > date.toDateString(); 'Tue Oct 20 2020' > date.toTimeString(); '19:31:14 GMT+0800 (China Standard Time)' > date.toLocaleString(); '10/20/2020, 7:31:14 PM' > date.toLocaleDateString(); '10/20/2020' > date.toLocaleTimeString(); '7:31:14 PM' > date.toISOString(); '2020-10-20T11:31:14.895Z' > date.toJSON(); '2020-10-20T11:31:14.895Z' > date.valueOf(); 1603193474895 > date.getTimezoneOffset(); -480

对象深入理解

创建对象
工厂模式——就是将创建对象的方法封装在函数里,但是类型无法细分,所有的对象都是Object类型,封装性差,占用内存多。function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); } return o; } var p1 = createPerson("terry",11,"boss"); var p2 = createPerson("larry",12,"daBoss"); 构造函数模式——自定义构造函数,本身也是函数,只不过能用来创建对象。可以细分类型,但是仍旧不能体现封装。function Person(name,age,job){ //函数内部没有return和new this.name = name; this.age = age; this.job = job; this.sayName = function(){ console.log(this.name); } } var p1 = new Person("terry",11,"boss"); var p2 = new Person("larry",12,"CEO"); 原型模式——所有的属性都是公共的。function Person(){} Person.prototype.name = "tom"; Person.prototype.age = 22; Person.prototype.job="boss"; Person.prototype.friends = []; Person.prototype.sayName = function(){ alert(this.name); } 每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性。 首先从对象实例本身开始查找,如果不在对象实例中,则继续搜索指针指向的原型对象。 当为对象实例添加一个属性时,这个属性就会屏蔽原型对象中保存的同名属性。 通过delete操作符可以完全删除实例属性。 通过原生对象的原型,不仅可以取得所有默认方法的调用,而且可以定义新方法。 可以向修改自定义对象的原型一样修改原生对象的原型,可以随时添加方法。 组合使用构造函数模式和原型模式——构造函数用于定义属性,原型用于定义方法和共享属性。可以区分不同类型的对象,体现了封装,不占用过多内存,支持共享的属性/方法,也支持不共享的属性/方法。function Person(name,age){ this.name = name; this.age = age; this.friends = []; } Person.prototype = { constructor : Person, sayName:function(){ console.log(this.name); } }
最新回复(0)