为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
492人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • 1.join()方法 默认是将字符串转换为字符串,并以“,”隔开元素,而join()中的参数就是替换字符串中的“,”, 而new Array(n+1).join(str)的原理是,创建一个n+1大小的数组,若用join()方法会产生含n个“,”的字符串,而str正好代替这些“,”以造成重复n次str参数的字符串。 2.reverse()方法 将数组的顺序颠倒,注意:原数组会被改变成颠倒后的数组。 3.sort()方法 sort()方法只会对数组进行字符顺序上的排序,例如a,b,c,d,而如果是数字,则会取第一位数的字符顺序进行排序,改完以后原数组会被修改。如果想用sort进行数字上的排序,则应写入函数参数function(a,b){return a-b;},这是升序排列,反之降序是b-a。 4.concat()方法 作用是合并数组,返回值是合并后的数组,原数组不会改变。如果参数是一个一维数组(没有嵌套),则合并的时候会拉平数组,如果是嵌套数组,合并后只会拉平最外一层。 5.slice()方法 切断数组,原数组不会修改,如果传入一个参数n,则返回第n+1个到最后一个元素的数组,如果传入n,m,则返回第n+1到m元素的数组,-1代表最后一个元素,-2代表倒数第二个元素,以此类推,若输入的参数为负数i,j,则返回倒数第|i|个到倒数第|j|+1个元素,总结来说,对于正数,左区间开,对于负数,右区间开。 6.splice胶结方法 切断数组胶结数组,原数组会被修改,输入参数n,那么原数组第n+1个元素到最后一个元素都会被删除(会作为该函数的返回值),如果输入参数m,n,则删除第m+1个到第m+n个元素。如果输入两个以上的参数则删除前两个参数所指定的元素,替换上剩下的参数。
    查看全部
  • Object.preventExtension(obj) 禁止扩展,就是静止以obj.z的方式新建属性 Object.isExtensible(obj) 判断是否可扩展 Object.getOwnPropertyDescriptor(obj,'x') 获得x属性的所有参数设置情况 Object.seal(obj) 将obj所有属性的configurable参数都设置为false,不可delete Object.isSealed(obj) 判断是否seal Object.freeze(obj) 冻结属性,即将obj对象所有属性的writable和configurable参数设置为false,禁止修改和delete Object.isFrozen(obj) 判断obj对象是否冻结 以上操作不会对枚举进行影响 JSON.stringify() 对象序列化,传给后端 属性值是undefined,json返回的序列化字符串结果里该属性值不显示。 NaN,Infinity时,装换成返回 null new Date() 转换成UTC时间格式 后端返回的JSON数据,转换成JavaScript对象 需用JSON.parse() 合法的json 属性必须以双引号引起来 +号运算符放在对象前面时,调用valueOf()方法没有valueOf()方法就调用toString。 +号运算符用作字符串拼接时,调用toString()方法。
    查看全部
  • 1、属性访问,点操作或者中括号(内部自动砖成字符串), 建议用点。但是如果是要拼的话用中括号。用for in会把原型链的读出来。 2、访问不存在属性,进行原型链查找,末端找不到,会undefined。 3、写属性,有的话就修改,没的话就新创建并赋值。 4、delete 删除属性,重复删除同一个属性,任然返回true。所以delete并不代表操作成功或者失败了,而是说还有没有这个属性值。prototype不能被删除。 5、configurable:是否可配置。getOwnPrototypeDescriptor(obj,属性) 6、var 定义的都不可以删除。函数和函数的函数都不可以被delete掉。隐式创建的变量可以删除(不推荐的语法)。 7、in操作符会向原型链向上查找的,hasOwnProperty自己有没有(用在for in判断过滤原型上的属性)。 8、Enumera不了:是否可枚举。 9、object.defineProterty创建的对象他对应的属性默认false。而字面量和new和赋值而创建的对象的默认的是true 10、!=undefined。就是不等于null和undefined、
    查看全部
  • 不声明的变量被赋值,默认为全局变量
    查看全部
  • use strict 可以写在整个函数的的里面,也可以写在整个函数的的最上面,也可以在上面加点东西啥的 1、严格模式,不允许用 with 语句。否则会报syntax error语法错误 2、一般可以隐式创建全局变量,直接进行赋值,但是严格模式会报错。 3 普通模式下:arguments[0..n]为函数fun(a,b,c)的参数的数组表现形式,严格模式下:arguments对象变为参数静态副本,即只能获得实际参数的值不能改变实际参数。ps:若得到的参数为对象,则仍可以借助arguments.x对对象的属性进行修改并产生影响。 4 在严格模式下,delete不可配置属性:Object.defineProperty(obj,'a',{configurable:false}});不能使用,会报错。 5 对象字面量属性名重复中,一般以最后一个属性为准,但在严格模式下会报错 6 严格模式下不能使用八进制字面量。 7 eval,arguments变为关键字,不可作为变量名和函数名。 8 eval独立作用域 9一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象。若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象。 10 试图修改不可泄属性(writable=false),在不可扩展的对象上添加属性时报TyoeError,而不是忽略。 11 arguments.caller , arguments.callee被禁用
    查看全部
  • for..in用于数组的遍历,但是 1、它遍历的顺序是不确定的,依赖于操作引擎; 2、enumerable为false时不会出现 3、for in 对象属性时受原型链影响,即当原型的enumerable为true时也会出现 with:修改当前作用域,所以不用对象.x。想深层次访问的时候定义变量就可以啦 with不建议用了
    查看全部
  • 1-4 包装对象 JS中有六种数据类型(一种对象类型object,五种原始类型string,number,boolean,null,undefined)这门语言的设计者,在设计的时候搞的非常的灵活,当以对象的方式使用原始类型的变量时会隐式的做一下包装,是原始类型包装成对象类型的数据。 当设置完成后,这个临时对象会被销毁掉。所以再次访问该属性,就是undefined。 var a="string"; a.length;//6 a.t=3; alert(a.t);//undefined 当尝试以对象的方式使用一个string/number/boolean基本类型的时候,比如访问这个字符串的length属性或增加一个属性,JavaScript只能把这个基本类型转换成包装类型对象。当设置完成后,这个临时对象会被销毁掉。所以再次访问该属性,就是undefined。
    查看全部
  • 请在index.html文件中,编写arraysSimilar函数,实现判断传入的两个数组是否相似。具体需求: 1. 数组中的成员类型相同,顺序可以不同。例如[1, true] 与 [false, 2]是相似的。 2. 数组的长度一致。 3. 类型的判断范围,需要区分:String, Boolean, Number, undefined, null, 函数,日期, window. 当以上全部满足,则返回"判定结果:通过",否则返回"判定结果:不通过"。
    查看全部
    0 采集 收起 来源:编程练习

    2018-03-22

  • 普通函数:调用之后就被释放 闭包作用:点击事件,用到外部变量,有了闭包会更加方便。 循环闭包的错误:如图错误。addEventListener()是一个回调函数,当我点击的时候才会获取这个i的值。但i在整个初始化的时候i已经是4。解决方法加多一个立即执行的匿名函数。 闭包的好处:函数有自己的作用域,定义的变量外部访问不到。封装具体的复杂的函数逻辑
    查看全部
  • 数组小结
    查看全部
  • forEach 数组遍历 map 数组映射(原数组不会被改变) arr.map(function(x){ return x+10; }); //[11,12,13] filter 数组过滤(原数组不会被改变) arr.filter(function(x,index){ return index % 3 === 0||x>=8; }) //[1,4,7,8,9,10] every(每个元素都符合) & some(任意一个元素符合) 数组判断 reduce & reduceRight 俩俩个数基于什么样子的操作 var sum=arr.reduce(function(x,y){ return x+y },0) //0+1+2+3 //6 (原数组不被改变) indexOf 查找元素的位置 isArray 判断是否为数组 Array.isArray([]); //true || []instanceof Array; //true || ({}).toString.apply([])==='[object Array]'; //true || [].constructor ===Array; //true
    查看全部
  • 对比。
    查看全部
  • 特殊运算符
    查看全部
  • 在IE9以后,可以用Object.defineProperty(obj,'x',{configurable:false,value:1}) 保护对象值不被delete掉
    查看全部
  • 逗号运算符:依次计算值,取最右边
    查看全部

举报

0/150
提交
取消
课程须知
1.您至少学习了本站“JS入门”、“JS进阶”两门基础课程。 2.如您具备一定实践经验对学习有很大帮助。 3.如您没有脚本编程开发经验,学习过程有可能会受挫部分内容或示例代码,请“暂时略过不懂的部分,后面章节会阐述”,当然想透彻学习,还需大量实践来体会知识的内涵。
老师告诉你能学到什么?
结合实例,深入解析以下知识内容: 1. 数据类型、表达式和运算符、语句; 2. 对象、数组、变量、函数; 3. this、闭包和作用域; 4. OOP; 5. 正则与模式匹配。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!