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

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
492人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • try语句如果抛出异常,则执行catch语句,否则不执行,无论有没有异常,都执行finally语句;try语句必须跟catch或finally语句中至少一个组合使用。
    try catch语句的嵌套语句执行顺序:
    1)如果内部嵌套的try语句抛出异常,但内部没有相配套的catch语句,先执行内部的finally语句,然后跳到最近一层的catch语句执行。
    2)如果内部嵌套的try语句抛出异常,内部有相配套的catch语句,先执行此语句处理异常,再执行内部的finally语句。不会再在外部处理异常。
    3)如果内部嵌套的try语句抛出异常,内部有相配套的catch语句,并且catch语句也抛出异常,如果内部的catch语句有对异常的处理,先执行异常处理语句,然后执行内部的finally语句,最后执行离内部catch语句抛出异常最近一层的catch语句处理异常。

    查看全部
  • 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个元素。如果输入两个以上的参数则删除前两个参数所指定的元素,替换上剩下的参数。
    查看全部
  • =:表示赋值,比如a=3;就是把3放到a里面 = =:表示等于,3= ="3";会返回true,因为浏览器内部会把字符串3变成数字3 = = =:表示严格等于,不会转换数据类型3= = ="3",会返回false,因为不会转换他们的数据类型,数字和字符串当然就不相等了 对象和对象比较,是比较的引用,两个对象都是new出来的(新创建出来的),所以是不同的对象,不同的对象的引用是不同的,所以输出是false 只有对象和基本类型进行比较的时候,才会将对象转变成基本类型,再作比较。两个对象比较的时候是不会转成基本类型的,如: var a = new String('hi'); var b = new String('hi'); a == 'hi';//true (先转换成基本类型再比较) b == 'hi';//true(先转换成基本类型再比较) 但是 a == b;// false (比较的是引用)
    查看全部
  • 《JavaScript权威指南》 MDN: https://developer.mozilla.org/zh-CN/learn/JavaScript
    查看全部
  • 判断this的指向(1-4优先级逐级递减,1优先级最高,4优先级最低): 1、函数被new调用,this指向由new新构造出来的这个对象; 2、函数通过call()、apply()、bind()调用,this指向被绑定的对象; 3、函数作为方法被调用,this指向这个对象(即常说的对象上下文); 4、默认(非严格模式)情况下,this指向window, 严格模式下,this指向undefined。
    查看全部
  • prototype 属性与原型 function Foo(){} 声明构造器 Foo 时, Foo 构造器默认会有 Foo.prototype 属性,Foo.prototype 属性本身也是对象,因此可以叫做“对象属性” 同时,Foo.prototype 默认又会有两个属性 Foo.prototype.constructor 和 Foo.prototype.__proto__ 其中,Foo.prototype.__proto__ 就是 Foo.prototype 的原型 Foo.prototype.__proto__ 又指向 Object 的 prototype 属性,即 Object.prototype Foo.prototype 的作用: 当使用 var obj = new Foo() 生成 Foo 的实例 obj 时,Foo.prototype 对象属性会当作 obj 的原型 obj.__proto__ prototype 属性与原型 __proto__ 的关系: prototype 是构造器(函数对象)上面预置的对象属性,原型 __proto__ 是对象(实例对象)上的原型 对象的原型 __proto__ 指向其构造器的 prototype 属性
    查看全部
    4 采集 收起 来源:概念与继承

    2017-02-19

  • 条件判断时先判断array再判断length,否则可能出现不存在length的情况,出错。
    查看全部
    4 采集 收起 来源:编程练习

    2017-02-17

  • JS的严格模式: 定义和优点:严格模式是一种特殊的执行模式,它修复了部分语言上的不足(禁用with),提供了更强的错误检查(重复属性,删除delete不可配置的属性等),并增强了安全性(在eval中使用独立作用域等); 模式的使用: (1)function func(){'use strict';}好处:向上兼容 (2)'use strict'; function func(){}指定整个js内的代码都是在严格模式下 与普通模式的区别: 在严格模式下,①不允许使用with;②不允许未声明的变量被赋值③arguments变为参数的静态副本,不管参数传与不传,对arguments无影响,但是对象的属性除外;④delete参数,函数名报错⑤delete不可配置的属性报错⑥对象字面量重复属性名报错⑦禁止八进制字面量⑧eval,arguments变为关键字,不能作为变量、函数名⑨eval变为独立作用域,其它地方不可以拿到eval的值;
    查看全部
  • 当尝试以对象的方式使用一个String基本类型的时候,比如访问这个字符串的length属性或者增加一些属性,javascript会智能地把这个基本类型转换成一个包装类型对象。当设置完成后,这个临时对象会被销毁掉。所以再次访问该属性,就是undefined。Number Boolean 等同理。
    查看全部
  • 编程练习
    查看全部
    4 采集 收起 来源:编程练习

    2016-07-23

  • typeof 是一个一元运算,使用 typeof 来获取一个变量是否存在,如 if(typeof a!="undefined"){alert("ok")}。typeof 一般只能返回如下几个结果: number,boolean,string,function,object,undefined。遇到null和undefined失效(IE 678等返回[object Object]) instanceof 用于判断一个变量是否某个对象的实例。适合自定义对象,也可以用来检测原生对象,在不同iframe和window间检测时失效
    查看全部
    3 采集 收起 来源:编程练习

    2018-03-22

  • JS读取返回来的json数据|JS匿名对象 方法一:函数构造定义法返回 var strJSON = "{name:'json name'}";//得到的JSON var obj = new Function("return" + strJSON)();//转换后的JSON对象 alert(obj.name);//json name 方法二:js中著名的eval函数 var strJSON = "{name:'json name'}";//得到的JSON var obj = eval( "(" + strJSON + ")" );//转换后的JSON对象 alert(obj.name);//json name 第二种方法需要注意的是,对象表达式{'name':'json name'}必须用 “()” 括住,否则会出现undefine错误提示 var strJSON = "{name:'json name'}"; var obj = eval(strJSON); alert(obj.constructor);//String 构造函数 alert(obj.name); //undefine 必须把对象表达式括起来eval执行才能生成一个匿名对象!
    查看全部
    3 采集 收起 来源:概念与继承

    2018-03-22

  • 用Object.prototype
    查看全部
    3 采集 收起 来源:编程练习

    2015-12-18

  • delete或者update z 都是操作对象的属性值而不会原型上的值。原型就是通过这种方式实现继承,保证对于原型上的属性值只可读不可改的
    查看全部
  • bind方法模拟 在不支持ES5的浏览器里模拟bind方法 几个注意地方: 1.var aArgs=Array.prototype.slice.call(arguments,1);//这里的arguments是相对function(oThis)而言的,也即对应的是oThis这个参数,这个oThis又是对应bind()里面的参数的,由于bind()第一个参数是对象,后面还可以是用于currying的参数,所以通过slice将后面的参数获取。由于arguments不是标准的数组,需通过数组原型链的调用来使用slice方法。 2.aArgs.concat(Array.prototype.slice.call(arguments)) //这里的arguments是对应fBound=function()这个匿名函数的,而fBound作为最后的返回,对应的是函数bind后赋给的变量(函数),后者再次调用时传入的参数就是这里的arguments,将上面currying的参数并上后面再传入的参数,才组成最开始的函数的参数this/fToBind。 3.fNOP空对象是为了作为通过new之后消除bind作用后函数中this指向空对象的原型链准备。而通过this instanceof fNOP来判断是否使用了new,并决定将对象bind上。没用new,则判断为false,bind(oThis);否则为true,即使用new,函数中this指向空对象。
    查看全部

举报

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

微信扫码,参与3人拼团

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

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