Javascript中的一些小细节(2)
数字、类型
- js只有一种数字类型,例如123e5表示12300000,123e-5表示0.00123;
- 创建数组:var car=new Array(‘f’,’h’,….);或者var car=[‘f’,’h’,…];
- 数值前缀为0,表示八进制;前缀为0x表示十六进制;
对象、方法
- For/in 循环遍历对象的属性;
- Object.keys(testObj) 返回对象属性名的字符串数组;
- Math.round(decimalValue) 返回小数四舍五入的值;Math.random() 返回0~1(不含1)之间的随机数,Math.random()*11返回1~10之间的随机数;
Math.random() * (max - min) + min 返回 min~max(不含max)的随机数 - Math.floor(xx) 向下(小)取整;Math.ceil(xx) 向上取整;
- fn.call(obj,param1,param2,…),obj可以为null;
- 使用 fn.call(obj) 形式:
function testCall(a,b){
console.log(`a:${this.a},b:${this.b}`); //被``包围的是模板字符串,为JavaScript提供了简单的字符串插值功能
}
var obj={
a:'123',
b:'321'
}
testCall.call(obj);//输出 a:123,b:321
- 获取子字符串方法:
testString.substring(start,end) // “顾前甩后”
testString.substr(start,number) // 第二个参数是获取的字符个数
类型转换
- Number(),String(),Boolean();
- typeof(xx) 返回出xx的类型(基本数据类型)字符串;检测出xx的具体类型需使用xx.constructor返回类似于function Array() { [native code] } 这样的字符串;
使用instanceof 检测某实例的原型链是否包含某构造函数.prototype:
function Car(make, model, year) {
this.make = make;
this.model = model;
this.year = year;
}
const auto = new Car('Honda', 'Accord', 1998);
console.log(auto instanceof Car); //true
//xx.constructor是function,比如:
let a=function(){};console.log(a.constructor);
//ƒ Function() { [native code] }
let a=0;console.log(a.constructor);
//ƒ Number() { [native code] }
let a='';console.log(a.constructor);
//ƒ String() { [native code] }
let a=true;console.log(a.constructor);
//ƒ Boolean() { [native code] }
undefined
-
数据类型:
Boolean,
Number: Number.MAX_VALUE,Number.MIN_VALUE
String,
Object(数组也是Object),
Function,
undefined,
null(被看作空对象引用,typeof null 等于Object);
BigInt:任意精度整数,甚至超过超过整数安全限制,不能与数字互换操作,例如:let y1 = x+53n;console.log(y1); //9007199254741045n 即为(2的53次方-1)*n
Symbol:符号类型,具有唯一性,不能转化为String输出,
Symbol("foo") !== Symbol("foo") const foo = Symbol() const bar = Symbol() typeof foo === "symbol" typeof bar === "symbol" let obj = {} obj[foo] = "foo" obj[bar] = "bar" JSON.stringify(obj) // {} Object.keys(obj) // [] Object.getOwnPropertyNames(obj) // [] Object.getOwnPropertySymbols(obj) // [ foo, bar ]
注意:NaN 为Number类型,未定义/声明的变量是undefined。
正则表达式
- /正则表达式/.exec(要匹配字符串) 相当于 字符串.match(正则表达式);
- 正则表达式.test(字符串) 返回boolean;字符串.replace(正则表达式,用于替换的字符串)。
Navigator/Screen/History对象
- window.navigator.appName(浏览器的名称)/appCodeName(浏览器的代码名);
- history.back() 指返回上一页;history.forward()指进入下一页;history.go(数字) 根据数字进行返回之前(负数)或进入后面的页面(正数);
- window.location.reload() 重新加载当前页面;window.location.replace(url) 跳转到url页面;
- window.location.hash:当前URL的锚点(通常指的是URL的#xxx内容,是代表某区域的特定url部分)。
Browser对象
- Window对象:所有js 的全局变量、函数都自动成为 Window对象的全局变量及函数(它的成员);
- window.screenX/screenY: 表示窗口相对于屏幕的X / Y 坐标;
- 页面被滚动到顶部:window.scrollTo(0,0);
- 确定浏览器窗口的尺寸方法:window.innerHeight/innerWidth. ; document.body.innerHeight/innerWidth ; document.documentElement.innerHeight/innerWidth
(innerHeight/innerWidth:返回窗口的文档显示区的高度/宽度)