Recent Posts
JS函数对象
JS函数对象 在讲函数之前,我们需要先知道函数也是一种对象。
1,定义函数 function fn(形参1,形参2){ 语句 return 返回值 } //具名函数 let a = function(x,y){ } //匿名函数 let f1 = ()=>{} //箭头函数 let f2 = new Function('x','y','return x+y') //使用构造函数,基本没人用,可以让你知道所有函数都是Function构造的,包括Object,Array,Function本身。 fn() //函数调用 2,函数要素(每个函数都有) 调用时机 函数在调用的时候,才会去使用,并不是声明了直接使用,注意调用时机。
作用域 每个函数都会默认创建一个作用域,一般都在{}中,其中在全局作用域声明的变量是全局变量,比如window的属性,其他的变量都是局部变量。作用域遵循就近原则。
闭包 如果一个函数用到了外部的变量,那么这个函数加这个变量,就叫做闭包。
function f1(){ let a = 2 function f2(){ console.log(a) } } 上述代码就是一种简单的闭包。
形式参数 在创建一个函数时,会给这个函数赋予参数,这些就是形式参数,并不是实际的参数,实际的参数在调用函数时传递,然后赋值给形参。 function fn(a,b){ return a+b } fn(1,2) 上述代码中的a,b是形式参数。1,2是实际参数,会被赋值给a,b。
read more
JS.数组对象
JS数组对象 1,声明数组 let arr = [1,2,3] let arr = new Array(1,2,3) //直接声明 let arr = '1,2,3'.split(',') let arr = '123'.split('') Array.from('123') //字符串转数组 arr1.concat(arr) //concat合并两个数组 arr1.slice(1) //从第一个开始切 arr1.slice(0) //切全部数组 2,增删改查 因为数组也是对象,数组的增删改查都可以使用对象的方法来达成,但是不够靠谱,所有我们这里只说数组独有的方法。
(1) 删 arr.pop() //删除数组最后一个元素 arr.shift() //删除数组第一个元素 arr.splice(start,n,'a','b') //splice方法接受参数,第一个参数表示从第几个开始删除,第二个参数表示删除几个,第三个参数表示用什么来替换。 (2) 增 arr.push('a') //从尾部增加一个元素 arr.unshift('a') //从头部增加一个元素 (3) 查 let arr = [1,2,3] for(let i = 0; i<arr.length;i++){ console.log(arr[i]) } //使用for循环遍历数组,得到数组中每个元素 arr.indexOf(value) //查找元素下标 arr.find(fn()) //找到符合条件的元素 arr,findIndex(fn()) //找到符合条件的元素下标 (4) 排序 arr.
read more
Js对象总结
JS对象总结 在说js对象之前,先回顾一下js的七种数据类型,分别是number,string,boolean,symbol,undefined,null,object。五种falsy值,undefined,null,'',0,NaN。
1,声明对象 对象是键值对的集合,其中键名是字符串,就算不加引号,js也会把他转成字符串。键值可以是数值,字符串,数组,函数,对象等。普遍使用以下代码声明一个对象。
let obj = { name:'jack', arr:[], func: (){ console.log('function') } obj1:{ a:'hello' } } 2,增删改查 (1) 删 delete obj.name //直接删除一个键值对 obj.name = undefined //将一个键值改成undefined(属性名依然存在) name in obj //判断属性名是否存在 (2) 查 Object.keys(obj) //查看所有属性名 Object.values(obj) //查看所有属性值 console.dir(obj) //查看所有属性(包括隐藏属性) obj.hasOwnProperty('') //检查该属性是否自身所有 obj['key'] //查看属性值 (3) 增 obj.name = 'jack' //直接赋值 obj['name'] = 'jack' //直接赋值,和上面一样作用 Object.assign(obj,{'name':'jack'}) //批量赋值 (4) 改 改的操作和增的操作基本一致。 3,原型链 我们知道每个对象都有隐藏属性__proto__,指向自己的原型,那么如果要自己增加原型该怎么做呢。 首先我们自己创建一个原型对象。
read more