Javascript中的一些小细节(2)

Javascript中的一些小细节(2)

数字、类型
  1. js只有一种数字类型,例如123e5表示12300000,123e-5表示0.00123;
  2. 创建数组:var car=new Array(‘f’,’h’,….);或者var car=[‘f’,’h’,…];
  3. 数值前缀为0,表示八进制;前缀为0x表示十六进制;
对象、方法
  1. For/in 循环遍历对象的属性;
  2. Object.keys(testObj) 返回对象属性名的字符串数组;
  3. Math.round(decimalValue) 返回小数四舍五入的值;Math.random() 返回0~1(不含1)之间的随机数,Math.random()*11返回1~10之间的随机数;
    Math.random() * (max - min) + min 返回 min~max(不含max)的随机数
  4. Math.floor(xx) 向下(小)取整;Math.ceil(xx) 向上取整;
  5. fn.call(obj,param1,param2,…),obj可以为null;
  6. 使用 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
  1. 获取子字符串方法:
    testString.substring(start,end) // “顾前甩后”
    testString.substr(start,number) // 第二个参数是获取的字符个数
类型转换
  1. Number(),String(),Boolean();
  2. 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
  1. 数据类型:
    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。

正则表达式
  1. /正则表达式/.exec(要匹配字符串) 相当于 字符串.match(正则表达式);
  2. 正则表达式.test(字符串) 返回boolean;字符串.replace(正则表达式,用于替换的字符串)。
Navigator/Screen/History对象
  1. window.navigator.appName(浏览器的名称)/appCodeName(浏览器的代码名);
  2. history.back() 指返回上一页;history.forward()指进入下一页;history.go(数字) 根据数字进行返回之前(负数)或进入后面的页面(正数);
  3. window.location.reload() 重新加载当前页面;window.location.replace(url) 跳转到url页面;
  4. window.location.hash:当前URL的锚点(通常指的是URL的#xxx内容,是代表某区域的特定url部分)。
Browser对象
  1. Window对象:所有js 的全局变量、函数都自动成为 Window对象的全局变量及函数(它的成员);
  2. window.screenX/screenY: 表示窗口相对于屏幕的X / Y 坐标;
  3. 页面被滚动到顶部:window.scrollTo(0,0);
  4. 确定浏览器窗口的尺寸方法:window.innerHeight/innerWidth. ; document.body.innerHeight/innerWidth ; document.documentElement.innerHeight/innerWidth
    (innerHeight/innerWidth:返回窗口的文档显示区的高度/宽度)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值