美文网首页
js基础知识

js基础知识

作者: 付小影子 | 来源:发表于2020-05-15 13:56 被阅读0次

    js运算符
    delete运算符,删除对象的属性 delete obj.x
    in运算符
    instanceof运算符
    typeof运算符
    new运算符
    this运算符
    void运算符

    js由语句组成 语句遵守特定的语法规则

    if while with
    block块语句 一对花括号定义,没有块级作用域(var变量)
    var 声明变量语句

    try-catch-finally()

    function 语句定义函数
    function fd(){ 函数声明,会被预先声明,声明前置,可以在函数声明前面调用,但是函数表达式不可以提前调用
    }

    var fe = function(){ 函数表达式
    }

    for..in 遍历语句 没有顺序

    switch 条件分支语句

    while do-while for 循环语句

    with修改作用于,不建议使用
    with({x:1}){
    console.log(x)
    }

    js严格模式 'use strict' 可以放在函数名前面或者函数体第一行
    'use strict'
    function fc{
    }

    js对象

    属性可以动态添加
    每个属性都有一个字符串key和对象的值value
    var obj = {x:1,y:2}
    obj.z = 3
    原始数据类型:object,number,string,boolean,null,undefined
    object对象->Function,Array Date...

    对象原形 prototype
    每个属性 都有属性标签
    writable
    enumerable
    configurable
    value
    get/set
    对象原型 prototype
    function foo(){}
    foo.prototype.z = 3;
    var obj =new foo();
    console.log(obj.z) ==>3

    创建对象:

    1.字面量

    var obj1 = {x:1,y:2}
    var obj2 = {
    x:1,
    y:2,
    o:{
    z:3,
    n:4
    }
    }

    2.new/原型链

    foo ->foo.prototype->Object.prototype(逐步向上查找,指导找不到返回null)
    function foo(){}
    foo.prototype.z =3;
    var obj = new foo();
    obj.x = 1;
    obj.y = 2;
    obj.x =>1
    obj.y=> 2
    obj.z=> 3(foo.prototype原型上定义的)
    typeof obj.tostring => function (Object.prototype原型上创建的函数)
    'z' in obj =>true //继承而来
    obj.hasOwnProperty('z') =>false //自己本身没有属性z

    delete只能删除对象属性,不能删除原型链属性,只能继承原型链上的属性,不能修改


    bbb.png aaa.png

    3.Object.create 系统内置的函数,接收参数,返回一个对象,对象的原型指向这个参数

    var obj = Object.create({x:1})
    obj.x =>1
    typeof obj.toString =>function
    obj.hasOwnProperty('x') =>false 不是obj属性,是原型链prototype上的属性


    ccc.png

    属性操作:读写属性 删除属性 检测属性 枚举属性 属性异常
    属性读 obj.x 等同 obj['x']
    for(p in obj) 遍历属性,没有顺序,有可能读出原型链上的属性
    删除属性 delete obj.x 等同于 delete obj['x'] ==>返回的结果 对象中是否有此属性
    属性检测 in,对象是否存在此属性包括原型链, 'x' in obj
    属性是否可枚举 obj.propertyIsEnumerable('x') =>true

    属性 get/set方法
    var man ={
    name:'shadow',
    get age()
    return 18;
    }
    set age(val){
    console.log('hello shadow');
    }
    }

    数组

    弱类型 可以包含不同类型的元素 可以是对象或者其他数组
    var arr = [1,2.0,“3”,{a:1,b:2},[1,2]]
    var arr2 = new Array(true,false,null,1,"hi")
    读取 arr[0] == >1
    删除 delete arr[0] ,arr[0] undefined 长度不会变
    push 在后面添加
    arr.push(3)

    unshift 在数组前面添加
    arr.unshift(0)
    pop 删除数组尾部元素 等同 arr.length -= 1
    shift 删除数组头部元素

    数组遍历
    for /for-in(没有顺序)

    稀疏数组 并不含有从0开始的连续索引,一般length属性值比书籍元素个数大
    var arr3 = new Array(100) //数组长度length = 100
    arr3[99] = 123
    arr3[1] = "shadow" //可以随意执行元素的下标
    arr3[2] ;undefined

    数组方法

    join() 数组连接
    reverse() 数组逆序,影响原数组
    sort() 排序 原数组会被修改
    var arr =['a','c','b']
    arr.sort();=>['a','b','c']

    arr.sort(function(a,b)){ //从小到大排序
    return a-b;
    }
    concat() 合并数组 原数组不会被修改
    arr.concat([10,11],13) ==>['a','c','b',10,11,13]
    slice() 返回部分数组 左闭右开,取起始位置元素,不取结束位置元素,原数组不会被修改
    var arr = [1,2,3,4,5]
    arr.slice(1,3) =>[2,3]
    arr.slice(1) =>[2,3,4,5] 没有结束位置,截取到尾
    arr.slice(1,-1) =>[2,3,4] -1,表示从数组后面往前数
    arr.slice(-4,-3) =>2,起始位置也可以为负数,从后往前数,定位起始位置

    splice() 数组拼接 会修改原数组

    var arr =[1,2,3,4]
    arr.splice(2) =>[3,4]
    arr =>[1,2] 修改原数组

    arr.splice(2,1) =>[3] ,从第2位开始截取,截取1位

    arr.splice(1,1,'a','b') =>[2],从第一位开始截取,截取1位,截取的位置被a,b填补
    arr;=>[1,'a','b',3,4]

    forEach(function(x,index,a)) 数组遍历,参数函数,x -> 值,index->下标, a ->指向数组本身

    map(function(x)) 数组映射,原数组不会被修改
    var arr = [1,2,3]
    arr.map(function(x){
    return x+10
    }) =>[11,12,13]

    filter(function(x,index)) 数组过滤,不会修改原数组

    every(function(x)) .数组判断,每一个都要比较
    arr.every(function(x){
    return x < 10;
    }) =>true

    some(function(x)) 数组判断,只要有一个符合条件,就true

    arr.some(function(x){
    return x === 1;
    }) =>true

    Array.isArray([]) 对象是否是数组 instanceof

    相关文章

      网友评论

          本文标题:js基础知识

          本文链接:https://www.haomeiwen.com/subject/lgdcohtx.html