目录
(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)
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时间
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)。 | <