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

直面JavaScript中的30个疑难杂症

公明2020 Web前端工程师
难度中级
时长 5小时 3分
学习人数
综合评分9.60
17人评价 查看评价
9.6 内容实用
9.8 简洁易懂
9.4 逻辑清晰
  • // 事件委托

    var obj2 = document.getElementById('demo2')

    obj2.addEventListener('click', function(e){

        var e = e || window.event;

        if(e.target.nodeName.toLowerCase() == 'li' { // IE8: e.srcElement

            alert(e.targe.innerHTML);

        }

    }, false);

    查看全部
  • 堆就是在栈中存储一个地址  通过地址找到对应的数据  

    栈就是原始类型的数据存储  就像鸭子弹一样  

    查看全部
  • 闭包是指有权访问另一个函数作用域中的变量的函数。——《JavaScript高级程序设计》

    查看全部
  •  

    1.关于typeof null,机器码后三位000(与对象完全一样)

    2. typeof function 为什么是function而不是object,在于是否存在call方法

    查看全部
  • // 什么是栈:计算机为原始类型开辟的一块内存空间 string number ...

    // 什么是堆:计算机为引用类型开辟的一块内存空间 object

    var a = 'MOOC';

    var b = a;

    console.log(a, b); // MOOC MOOC2


    var c = {key: 1};

    var d = c;

    d.key = 2;

    console.log(c, d); // 2, 2


    // ['MOOC', 'MOOC2']

    // c d ['x00000018', 'x00000018'] -> { {key: 1} }

    // c d x00000018 -> {key: 2}

    查看全部
  • // instanceof 检测 bool: true false

    // A instanceof B

    console.log([] instanceof  Array); // true

    console.log({} instanceof  Object); // true

    console.log(new Date instanceof  Date); // true

    function Person(){};

    console.log(new Person() instanceof  Person); // true


    console.log([] instanceof  Object); // true

    console.log(new Date instanceof  Object); // true

    console.log(new Person() instanceof  Object); // true

    // instanceof 原型链 A instanceof B true, B instanceof C true

    // 儿子 爸爸 爷爷


    if(typeof(val) !== undefined) {}


    console.log(Object.prototype.toString.call('1')); // string

    console.log(Object.prototype.toString.call([])); // Array

    查看全部
  • // typeof 检测 返回的是对应的数据类型

    console.log(typeof(123)); // number

    console.log(typeof(true)); // boolean

    console.log(typeof('MOOC')); // string

    console.log(typeof(undefined)); // undefined


    console.log(typeof(null)); // object 为什么不null

    // 计算机typeof 返回的数据类型 机器码 01011: 000 => object

    // null 000000...000 => object

    // js bug 


    console.log(typeof([])); // object  // 引用

    console.log(typeof(new Date())); // object

    console.log(typeof({})); // object


    console.log(typeof(function(){})); // function

    console.log(typeof(Array)); // function 为什么不是object

    // typeof 引用类型 object: object function

    // object 定义一个[[call]] 如果已经定义了call方法就是 function 不是 object


    var str = 'MOOC';

    console.log(typeof(str)); // string


    var str1 = new String('MOOC'); // 实例化后的对象

    console.log(str1); // {} key : value 0:M 1:O ....

    console.log(typeof(str1)); // object

    查看全部
  • http://img1.sycdn.imooc.com//627885060001b8ee07000062.jpg

    浅拷贝两种方式:遍历 和 Object.create()

    查看全部
  • console.log(Object.prototype.toString.call('1')
    console.log(Object.prototype.toString.call('[]')
    查看全部
  • todo 没看懂

    查看全部
  • 包装对象:String Number Boolean

    查看全部
  • JS中this的用法


    1. 代指当前调用这个对象

    2. 4中绑定规则:默认绑定、隐式绑定、显示绑定、new绑定。优先级从低到高。

    3. 改变this指向:call  apply  bind

    4. 手写一个bind方法


    查看全部
  • js中New的执行过程有哪几步


    • 实例化对象

    共4步骤:

    1. 创建一个新的对象obj:var obj = new Object()

    2. 把obj的proto指向构造函数的prototype对象 实现继承:obj.__proto__ = Fn.prototype

    3. 将步骤1新创建的对象obj作为this的上下文:var result = Fn.call(obj)

    4. 返回创建的对象obj(如果该函数没有返回对象,则返回this)

      if( typeof result === 'object' ){

          return result  //func = result

      }else{

          return obj    //func = obj

      }

    查看全部
  • function对象call、apply、bind

        Function.apply ( obj, args )//args为数组

        Function.call ( obj, args )//args为单个参数

    一、apply方法

    1. apply()方法调用一个函数,其具有一个指定的this值,以及作为一个数组(或类数组对象)提供的参数。

    2. apply方法能劫持另一个对象的方法,继承另外一个对象的属性

    3. function.apply(obj, args)方法能接受两个参数

    4. obj:这个对象将代替function类里this对象

    5. args:这个是数组,他将作为参数传给funcrion(args--->arguments)

    二、call方法

    1. call方法与apply作用相同,唯一区别是第二个args参数

    2. call:单个参数传入,apply:以数组形式传入


    三、bind方法

    1. bind:类似于call 但是与其不用的是call调用之后可以立即执行,但是bind需要用一个变量进行接收之后再执行。

    查看全部

举报

0/150
提交
取消
课程须知
1、有一定的前端JavaScript基础的用户 2、想对JavaScript有更深层次的了解,或者是对常见JavaScript面试题难以理解的用户 3、技术储备:JavaScript、HTML、CSS
老师告诉你能学到什么?
JavaScript中比较重要的知识点,例如数据类型检测;面试中常见的闭包、作用域和作用域链、执行上下文等等;还有JavaScript中的原型、原型链,面向对象问题,以及实战开发的运用。

微信扫码,参与3人拼团

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

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