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

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
492人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • javascript6种数据类型

    https://img1.sycdn.imooc.com//5c09c62d0001534b09070542.jpg

    查看全部
  • 02:10,实际测试,能否解决js.init中问题?
    查看全部
    0 采集 收起 来源:[JavaScript]this

    2018-12-06

  • 对obj的z赋值,只会影响到obj本身,不会影响到obj的原型,delete obj.z也是只作用到obj本身

    查看全部
  • 运算符。。。

    查看全部
  • Array.isArray哟用来判断传进来的变量是否是数组,然后arr1.length用来判断两个数组的长度是否相等,如果这两个条件不满足,直接return false。

    然后定义两个空的数组,将原来两个数组的每个成员的类型存进这两个新的数组,接着对这两个新数组的成员进行排序,在javascript中的sort函数时默认按照字符串的比较进行排列的,所以如果是比较数字的话,需要重写起比较使用的做差的function.此例中则不需要。

        sort函数会返回排序后的数组,这里需要注意的是,在js中的sort函数时在原数组上进行排序,不会形成副本。

        在JS中的tostring会将数组转换成一个字符串,每个成员用逗号隔开。转换成字符串后,就可以用==进行比较了,这里需要注意的是,在js中是不能用==来比较数组的,因为数组在这里是对象,而==只会比较这两个对象是否是同一个对象,即比较这两个对象的地址,所以一般需要使用遍历成员的方法或者是将数组转换成字符串的方法进行比较,但是用转换成字符串的形式也是有隐患的,比如字符1和字符串1都会被转换成1,这里需要注意,但是本例中应该不存在这个问题,因为待比较的数组成员都是数据类型,不会有上述的情况。


    查看全部
    1 采集 收起 来源:编程练习

    2018-12-04

  • 记一下昂昂

    查看全部
  • typeof ; Object.prototype.toString; instanceof<br />
    查看全部
  • 类型判断中常用的是typeof; instanceof; Object.prototype.toString

    查看全部
  • 在对基本类型进行对象类型的操作时,Javascript会创建一个对象来实现相应的操作,操作完了之后该对象就被销毁,所以第二次访问a.t时是undefined

    查看全部
  • 巧用+/-规则转换类型,比如“num-0”可以转换为数字类型

    num+''可以转换为字符串

    查看全部
  • 原始类型:number, string, boolean, null, undefined

    对象类型object , 又包含Funciton, Array, Date

    查看全部
  • 正则表达式

    特殊字符:

    .    任意一个字符,换行符除外\n,\r

    \d    0-9数字

    \D    非0-9数字

    \w    0-9 a-z A-Z 下划线

    \W    非\w

    \s    空格符,TAB 换页符 换行符

    \S    非\s

    正则直接量:用 / 包裹

    字符转义 ; \

    https://img1.sycdn.imooc.com//5c0488750001188c07250341.jpghttps://img1.sycdn.imooc.com//5c0488c7000179c607590402.jpghttps://img1.sycdn.imooc.com//5c04896700011f5607480180.jpghttps://img1.sycdn.imooc.com//5c0489e70001260807270368.jpg

    查看全部
  • <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>闭包</title>
    </head>
    <body>
        <script>
           function fun1() {
               var value=30;
               return function () {
                   return value;
               }
           };
           var fun2=fun1();
           //将fun1()赋值给变量fun2之后,此时函数会返回一个匿名函数,并将该匿名函数赋值给fun2
            console.log(fun2);   //打印function(){return value;}
           //fun2()就相当于调用了该匿名函数,匿名函数返回的是fun1()作用域下的变量,在闭包中可以引用
           //因此下面的将会打印30
           console.log(fun2());  //打印30
     </script>
    
    </body>
    
    </html>

    查看全部
  • 5-3数组方法
    Array.prototype.join()
    Array.prototype.reverse()                             原数组被修改
    Array.prototype.sort() 按字符串排序的。源码???     原数组被修改
    Array.prototype.concat(),如果参数为数组,数组会被拉平一次。
    Array.prototype.slice() 返回数组片段。左闭右开。      原数组未被修改
    Array.prototype.splice() 数组拼接                     原数组被修改
    Array.prototype.forEach()  数组遍历
    Array.prototype.map() 数组映射                        原数组未被修改
    Array.prototype.filter() 数组过滤               原数组未被修改
    Array.prototype.every&some:数组判断   every:数组中的每一个元素都符合一定的条件。some:只要任意一个元素符合就为真。
    Array.prototype.reduce&resuceRight:   reduce把数组的元素两两操作,得到唯一值。原数组未被修改  resuceRight:从右向左遍历。
    Array.prototype.indexOf:数组检索 没有的元素返回-1
    Array.prototype.lastIndexOf:数组检索,从右向左找
    Array.isArray()
    字符串可理解为类数组:
    var str = "hello world";
    str.charAt(0); // "h"
    str[1]; // e
    Array.prototype.join.call(str, "_");
    // "h_e_l_l_o_ _w_o_r_l_d"

    6-1
    js中函数也是对象
    函数不同的调用方式1.直接调用foo();2.对象方法o.method();3构造器new Foo();4.call(通过逗号)/apply(通过数组)/bind(传入对象)  ,func.call(o)
    6-2:函数声明和表达式
    命名函数表达式 var func = function nfe(){};
    function构造器
    6-3:this
    全局的this为window
    作为对象方法的函数的this
    对象原型链上的this
    构造器中的this
    6-4函数属性&arguments
    arguments是类数组的对象
    如果参数传进来,通过arguments赋值才有效。严格模式下,不能通过arguments改变参数的值。

    查看全部
  • 定义变量使用关键字var

    变量没有方法和属性
    var a = "123"
    a.length为3
    一个变量怎么会有方法呢?因为隐式转换为对象类型所以有方法。算出后自动销毁。变为变量。

    2。类型检测
    typeof:判断基本类型的时候用
    obj instanceof Object:适合判断自定义对象
      每个对象都有prototype属性
    object.prototype.toString.apply()

    函数表达式和函数声明最大的区别,函数表达式会预先处理

    for in 1.遍历的时候顺序不确定!2.对象的属性里面enumerable为false时不会在for中出现。3对象属性收原型链影响

    获取对象属性的两种方式:var obj={a:1,b:2} obj["a"]和obj.a

    Object.defineProperty(cat,'price',{enumeable:false,value:1000});//enumeable为false 不可枚举
    cat.propertyEnumerable('price');//false
    cat.hasOwnProperty('price');//true

    //configurable:true 的时候子链可以修改,删除父链的值

    4-5:属性标签:对象的属性的属性
    Object.getOwnPropertyDescriptor(对象,'属性')
    configurable: 属性标签是否可以修改,是否可以通过delect方式删除属性
    enumerable: 是否可以被遍历
    value: true
    writable: 是否可写

    Object.keys(); 可以看到一个对象的所有key
    4-6:对象标签
    proto:原型标签,指向原型链
    class:
    extensible:对象是否可扩展,即对象的属性是否可添加,默认为true,通过调用preventExtension(对象名)可修改。
    seal(对象名)方法,将对象的属性的属性标签的configurable设置为false。用isSealed()查看是否设置为seal
    freeze(对象名),将对象的属性的属性标签的configurable,writable设置为false。用isFrozen()查看是否设置为freeze

    序列化:JSON.Stringify(obj);如果对象的属性的值是undefined,则该属性不会出现在序列化中。
                                如果属性的值是NaN或者Infinity,则该属性的值在序列化后为null
    obj = JSON.parse('{"x":1}')
    obj.x ;//1

    +obj:会先找valueOf方法,再找toString方法,尝试把对象转化为一般类型

    5-1:数组是值的有序集合,JS中的数组是弱类型的
    创建数组的方式1.var arr = [];
            var arr = new Array();注意new可以省略。
    arr.push(),arr[arr.length]在数组尾部添加数据;arr.unshift();在数组头部添加数据
    arr.pop()删除最尾部元素,arr.shift()删除头部元素

    5-3数组方法
    .join()
    .reverse()                             原数组被修改
    .sort() 按字符串排序的。源码???     原数组被修改
    .concat(),如果参数为数组,数组会被拉平一次。
    .slice() 返回数组片段。左闭右开。      原数组未被修改
    .splice() 数组拼接                     原数组被修改
    .forEach()  数组遍历










    查看全部

举报

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

微信扫码,参与3人拼团

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

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