12、数据系统内置功能(字符串、数组、时间、Math、遍历器、对象成员检测、Object静态方法、对象序列化、正则表达式)

这篇博客详细介绍了JavaScript中的字符串特效、截子串方法、数组操作、时间处理、Math对象的函数、遍历器的多种循环方式,还包括对象成员检测和Object的静态方法,以及对象序列化和正则表达式的基本概念。内容覆盖了ES5和ES6的相关特性,适合JavaScript开发者学习和复习。
摘要由CSDN通过智能技术生成

目录

 12.1字符串

12.1.1特效标签

         12.1.2字符串截子串

12.2 数组

12.3时间

12.4Math

12.5遍历器

1、for 循环

2、for in 循环  (es5的技术)

3、while 循环

4、 do-while 循环

5、 Array forEach 循环

6、 Array map() 方法

7、 Array filter() 方法

8、 Array some() 方法

10、 Array reduce() 方法

11、 Array reduceRight() 方法

12、for of 循环 ( Es6 )

12.6 对象成员检测

1.instanceof:

2. isPrototypeOf:

3. hasOwnProperty()  

4. propertyIsEnumerable():

12.7 Object静态方法

1.静态方法 

2.Object类的静态方法 

(1) Object.getPrototypeOf(obj)

(2) Object.getOwnPropertyNames(obj)

(3) Object.defineProperty(obj,propName,desc)

(4) Object.create(proto,[props])

(5) Object.getOwnPropertyDescriptor(obj,propName)

(6) Object.preventExtensions(obj)

(7) Object.seal(obj)

(8) Object.freeze(obj)

12.8 对象序列化

12.9 正则表达式


 12.1字符串

12.1.1特效标签

        big——就是给文字加特效

        var str = "hello,world"

        var re=str.big()       //原字符串str没有改变

        console.log(typeof re)   //string  

        console.log(re)    //<big>hello,world</big>

            re=str.anchor("http://www.baidu.com")

            re=str.link("http://www.baidu.com")

            re=re.bold()

            re=str.blink()

            re=str.fontcolor("red")

            re=str.fontsize("30px")

            re=str.italics()

            re=str.small()

            re=str.sup()

            re=str.sub()

以上特效的 万能方式:

主要思想:在原型上加方法,所以字符串就可以调,调之后return返回一个新的字符串,新字符串是基于this的

			
		    String.prototype.mytool=function mytool () {
				if(arguments.length){
					var color=arguments[0]
					var font=arguments[1]
					var link=arguments[2]
					//return '<a href="'+link+'" style="font:'+font+';color:'+color+'">'+this+'</a>'
					return `<a href="${link}" style="font:${font};color:${color}">加特效的方法</a>`
				}
				return '<a href="https://www.sanxiau.edu.cn/">'+this+'</a>'
			}
			var box=document.querySelector(".box")
			var str="加特效的方法 "			
			re=str.mytool()
			re=str.mytool("red","20px","https://www.sanxiau.edu.cn/")
			box.innerHTML=re
			console.log(re,str)

首字母大写: (可用此思想设计把其中哪一个字母/汉字变大、变颜色等)

			String.prototype.capUppserCase=function() {
				var re=this[0].toUpperCase()				
				for(var i=1;i<this.length;i++){
					re+=this[i]
				}
				return re
			}
			var str="poStasdasdf"
			var re=str.capUppserCase()
			console.log(re)
	String.prototype.capUppserCase=function() {
				var re=this[0].bold()
				var re2=this[1].bold()
				re+=re2	
				for(var i=2;i<this.length;i++){
					re+=this[i]
				}
				return re
			}
			var str="全国计算机等级考试报名通知 一、报考5月全国计算机等级考试的考生严格按照《重庆市2022年5月全国计算机等级考试报名公告》(附件1)的要求报...学术信息 | ACADEM"
			var re=str.capUppserCase()
			console.log(re)
			var box=document.querySelector(".box")
			box.innerHTML=re   //全国变粗

12.1.2字符串截子串

     substr ——取下标   左右都闭   不改变原字符串  注意不是驼峰命名法

        var str="hello"

        var re = str.substr(1,3)  //ell

        // var re = str.substr(-5,1)  //h

        console.log(re)

        substring  ——左开右闭   数字代表第几个,不是下标

        var str="hello"

        var re = str.substring(1,3)  //(1,3]   el

        // var re = str.substring(-1,3)  //hel

        console.log(re)()

        slice 与 substring的区别

        var str="hello"

        var re = str.slice(1,3)  //el

        // var re = str.slice(-1,3)

        console.log(re)

        split一定会返回一个数组,可以不传参,不改变原字符串

        var str="hello"

        var arr=str.split("e")  //h llo

        var arr=str.split("")  //h e l l o

        var arr=str.split("q")  //hello

        var str="helxxlo"

        var arr=str.split("l")  //he xx o

        console.log(arr)

对象的属性名其实是一个字符串,所以一般都要加引号,但很多时候我们都没加 "name":"jack"

        var a="b"   //让obj{b:20}

        obj.a=20   //此方法不行

        obj[a]=20   //此方法可以   表示obj有一个属性是b

        obj["a"]=20  //表示obj有一个属性是a

 笔试题原题:把当前网页的url的参数解析为一个对象

			
			window.location.href   //	获取当前网页的地址、网址		
			var url='http://www.hqyj.com/index.html?user=karen&page=10&count=100'
			function  parseurl(str) {
              var querystring=str.split("?")[1]
				var arr=querystring.split("&")//["user=karen","page=10","count=100"]
				var obj={}
				for(var i=0;i<arr.length;i++){
					var arr2=arr[i].split("=")
					obj[arr2[0]]=arr2[1]
				}
				return obj
			}
			var obj=parseurl(url)   //{user:"karen",page:"10",count:"100"}
			console.log(obj)

        indexOf  检测位置,返回数组的小标。-1就代表没有,第二个参数不写默认为0

        var str="abcdea"

        var re=str.indexOf("cde")   //2

        var re=str.indexOf("a")   //0

        var re=str.indexOf("a",2)   //5   从数组下标2开始检测a的位置

        var re=str.indexOf("a",0)   //0

        console.log(re)

    预测笔试题

		
			String.prototype.count1=function(str) {
				var re=-1;
				var count=0
			    do{					
					re=this.indexOf(str,re+1)
					if(re!=-1){count++}
				}while(re!=-1)	
				return 	count					
			}			
			var str="的1935年秋,原在浙西南坚持游击斗争红军挺进师,在刘英和粟裕率领下,冲破蒋军重重封这是叶飞和粟裕、刘英第二次会面了。上一次会面,是在1934年8月,由红7军团组成北上抗日先遣队路经闽东,叶飞发动地方组织,为先遣队补充了不少兵员和给养。"
			var re=str.count1("的")
			console.log(re)//的出现的次数

        toString  

        var str="hello"

        var re=str.toString()

         console.log(re)    //hello

 valueOf

对象是一种引用数据,字符串是基础数据

            var str="hello"

            var re=str.valueOf()

            console.log(re,typeof re)  //hello string

            var strobj=new String("hai")

            var re2=strobj.valueOf()

            console.log(strobj,typeof strobj,re2)  //String{'hai'} object hai 

           var str="100"

            console.log(typeof str.toString())  //100  这是string

            console.log(typeof str.valueOf())  //100    这是string

           

           

基本数据(也称原始数据,不可分割)和引用数据的区别——包装对象

 .语法是一种引用数据的语法糖,只有引用数据才有  标准写法 obj[]

str.split()   //那为什么字符串可以点语法,就用到包装对象

           

隐式操作 因为字符串是基本数据 所有所有的基本数据当做对象使用时  它们的点语法 都会多一步隐式操作 (隐式包装成一个对象)。包装对象会销毁

基本数据是不可以保存数据的

            var str="hello"

            str.age=20

            //str.age=20 的 隐式操作

            //var str=new String("hello")

            //str.age=20

            var re=str.age

            //var re=str.age 的 隐式操作

            //var str=new String("hello")  //这个对象和上面的对象是两个对象

            // var re=str.age

            console.log(re)   //und

           

            //所以str可以调split方法

            str.split("o")

            // var str=new String("hello")

            // str.split("o")

            //str对象的原型对象是String.prototye。原型对象上面就有split方法

            console.log(String.prototype)

12.2 数组

12.3时间

<
Date() 返回当日的日期和时间。

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。

getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。
getMonth() 从 Date 对象返回月份 (0 ~ 11)。
getFullYear() 从 Date 对象以四位数字返回年份。
getYear() 请使用 getFullYear() 方法代替。
getHours() 返回 Date 对象的小时 (0 ~ 23)。
getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。
getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。
getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。
getTime() 返回 1970 年 1 月 1 日至今的毫秒数。
getTimezoneOffset() 返回本地时间与格林威治标准时间 (GMT) 的分钟差。
getUTCDate() 根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。
getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。
getUTCMonth() 根据世界时从 Date 对象返回月份 (0 ~ 11)。
getUTCFullYear() 根据世界时从 Date 对象返回四位数的年份。
getUTCHours() 根据世界时返回 Date 对象的小时 (0 ~ 23)。
getUTCMinutes() 根据世界时返回 Date 对象的分钟 (0 ~ 59)。
getUTCSeconds() 根据世界时返回 Date 对象的秒钟 (0 ~ 59)。
getUTCMilliseconds() 根据世界时返回 Date 对象的毫秒(0 ~ 999)。
parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。
setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。
setMonth() 设置 Date 对象中月份 (0 ~ 11)。
setFullYear() 设置 Date 对象中的年份(四位数字)。
setYear() 请使用 setFullYear() 方法代替。
setHours() 设置 Date 对象中的小时 (0 ~ 23)。
setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。
setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。
setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值