console
// //string test
// let str = "sdssssdddd";
// let result1 = str.search("d");
// let result2 = str.indexOf("s");
// console.log(result1);//1
// console.log(result2);//0
// console.log(str.slice(0,5))// sdsss
// console.log(str.substring(0,5))// sdsss
// console.log(str.substr(0,5))// sdsss
// console.log(str.replace(/sd/,"myname"))//mynamessssdddd
// console.log(str.replace("sd","myname"))//mynamessssdddd
// console.log(str.split('').reverse().join(""))//ddddssssds
// console.log(str.concat("123"))//sdssssdddd123
// console.log(" my".trim());//my
// console.log(str.charAt(2));//s
// console.log(str.strike())//sdssssdddd 加了删除线
// //Number test
// let num = 33;
// console.log(num.toString(16));// 21 string
// console.log(num.toString(8));//41
// console.log(num.toString(7));//45
// console.log(num.toString(2));//100001
// console.log(num.toExponential(8))//3.30000000e+1 string
// console.log(num.toPrecision(8))//33.000000 保留8位有效数字 string
// console.log(num.toFixed(2))//33.00 保留两位小数 string
// console.log(parseInt("15692373380 is my phone number"))//15692373380
// console.log(parseInt("my phone number is 15692373380"))//NaN
// console.log(Number(new Date()));//1616140065259 时间戳 只有Number有这个作用,parse方法不可以
// console.log(Number.NEGATIVE_INFINITY + Number.POSITIVE_INFINITY)//NaN infinity+1 也是 infinity
// console.log(typeof(new Number(11)));//object
// console.log(typeof((new Number(11).valueOf())));//number valueOf方法可以将对象转换为原始值
// console.log(Number.MAX_SAFE_INTEGER);//9007199254740991
// console.log(Number.MAX_SAFE_INTEGER+2);//9007199254740992 这里精度明显有问题了
// //array test
// let arr = [1,2,3,4,"my",5];
// console.log(arr instanceof Array);//true方法 n你
// console.log(Array.isArray(arr));//true 两个检验数组的方法
// //push pop unshift shift
// delete arr[3]
// console.log(arr);//[1,2,3,null,"my",5]
// arr = [1,2,3,4,"my",5];
// console.log(arr.concat([6]));//[1,2,3,4,"my",5,6] 只是一个返回值 arr没改变
// //splice前两个参数指定插入位置,位置后应删除多少个元素,后面是新元素
// arr.splice(4,1);
// console.log(arr);//[1,2,3,4,5]
// arr = [1,2,3,4,"my",5];
// console.log(arr.slice(1,2));//[2]
// console.log(arr.sort());//[1,2,3,4,5,"my"]
// console.log(arr.sort((a,b)=>{return b-a}));//[5,4,3,2,1,"my"]
// console.log(arr.sort(()=>{return 0.5-Math.random()}));//数组乱序
// arr = [1,2,3,4,"my",5];
// let temp_array = [];
// //forEach 好像和 for item in arr 也没啥区别
// //iteration方法好像都不会直接改变原数组,而是返回一个新数组(除了forEach)
// arr.forEach((value,index,arr)=>{
// temp_array.push([value,index]);
// })
// console.log(arr)
// console.log(temp_array);//[[1,0],[2,1],[3,2],[4,3],["my",4],[5,5]]
// temp_array = [];
// //下行代码输出["0-1","1-2","2-3","3-4","4-my","5-5"]
// console.log(arr.map((value,index,arr)=>{return index + "-" + value}));
// //下行代码输出[1,2,3,4,5] 注意回调函数中应该return一个布尔值
// console.log(arr.filter((value,index,arr)=>{return typeof value=="number"}));
// //16 1+1+2+3+4+5 total刚开始默认是1
// console.log(arr.reduce((total,value,index,arr)=>{return total+index;}));
// console.log(arr.every((value,index,arr)=>{ return typeof value=="number"}));//false 有个string
// console.log(arr.some((value,index,arr)=>{ return typeof value=="string"}));//true 有一个string
// console.log(arr.indexOf("my"));//4
// console.log(arr.find((value,index,arr)=>{return index==4}));//my 还有个findIndex函数
// //
// console.log(12222);
// console.log(/./g.exec("baba"));
// console.log();
// console.log();
//Object test
// let obj = new Object();
// //设置属性
// Object.defineProperty(obj,"name",{
// value:"zhouziyue"//value是最重要的值,其他的就是一些对象特性
// //value 默认 undefined
// //configurable 默认false
// //enumerable 默认false 数组等为true
// //writable 默认false
// //get set 默认undefined
// });
// //批量设置属性
// Object.defineProperties(obj,{
// "sex":{
// value:"man",
// writable:true,
// },
// "weight":{
// value:25
// }
// });//相当于一个defineProperty的批处理版
// console.log(Object.getOwnPropertyDescriptor(obj,"name"));
// //{"value":"zhouziyue","writable":false,"enumerable":false,"configurable":false}
// console.log(Object.getOwnPropertyNames(obj));
// //["name","sex","weight"]
// console.log(Object.keys(obj));//获取所有可枚举的属性,并返回数组
// console.log(Object.getPrototypeOf(obj));//{} 获取原型
// console.log(Object.isExtensible(obj));//true 查看能否向对象添加属性
// Object.preventExtensions(obj);//阻止以后向对象添加属性
// console.log(Object.isExtensible(obj));//false 说明上一个函数起作用了
// console.log(Object.isSealed(obj));//true 说明可以修改对象的属性
// Object.seal(obj);//阻止以后修改对象添加属性
// console.log(Object.isSealed(obj));//false
// Object.freeze(obj);
// console.log(Object.isFrozen(obj));
// let o = {
// name:"aa",
// get name(){
// return "1111";
// },
// set name(value){
// this.name = value;
// }
// }
// o.name = "sb";
// console.log(o.name);
//Es6 test
// console.log(Number.EPSILON)
<div id="main" title="a"></div>
<style>
#test2{
height:0px;
width:0px;
margin-top:0px;
margin-left:0px;
}
#main{
margin:100px;
height:100px;
width:100px;
background-color:hsla(120,100%,50%,1);
border-style:dashed dotted double ridge;
border-color:red;
z-index:0;
padding:5px;
outline-color:yellow;
outline-style:dotted;
margin-left:
}
}
</style>
<script>
</script>