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

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
493人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • 9-11
    查看全部
    0 采集 收起 来源:prototype属性

    2015-10-12

  • 9-10 修改prototype后,对已经创建的对象没有影响,但是影响后续创建的对象的值 修改类.prototype.属性时,会影响所有已经创建的实例,相当于修改静态变量; 但是直接修改类.prototype,赋值为新的对象时,并不会影响到已创建的实例,但是会对之后新创建的实例有影响。分别对应图中的第一、二、三部分。
    查看全部
    0 采集 收起 来源:prototype属性

    2015-10-12

  • 9-9
    查看全部
    0 采集 收起 来源:再谈原型链

    2015-10-12

  • 9-8
    查看全部
    0 采集 收起 来源:再谈原型链

    2015-10-12

  • 9-7
    查看全部
    0 采集 收起 来源:再谈原型链

    2015-10-12

  • 9-6
    查看全部
    0 采集 收起 来源:再谈原型链

    2015-10-12

  • 9-5
    查看全部
    0 采集 收起 来源:概念与继承

    2015-10-12

  • 9-5 Object.create("参数"); 创建一个空对象,并且对象的原型指向它的参数 Person是父类的构造函数,Student是子类的构造函数。这里子类Student继承了父类的属性。 function Student(name, age, className){ Person.call(this, name, age); this.className = className; } //这段函数使Student继承了Person的属性。Person.call(this, name, age);也可以写为Person.call(this, arguments); Student.prototype = Object.create(Person.prototype); Student.prototype.constructor = Student; //这段函数使Student的原型继承了Person的原型。使用Objet.create是为了不让Student.prototype和Person.prototype指向同一个对象。 这个例子中的name, age, className为私有属性,写在构造函数中。原型中的LEGS_NUM和ARM_NUM为共有属性。所有新生成的实例共享共有属性。比如 var bosn=new Student('Bosn', 27, 'class 3, grade 2'); var olderBosn=new Student('Older Bosn', 28, 'class 3, grade 2'); bosn.LEGS_NUM == olderBosn.LEGS_NUM; //true
    查看全部
    0 采集 收起 来源:概念与继承

    2018-03-22

  • 9-4 Foo函数有一个prototype的对象属性,它的作用是在当使用 new Foo()去构造父的实例时,Foo.prototype属性会作为new(构造)出来的对象的原型。prototype和原型是两回事,prototype是函数对象上预设的对象属性,而原型通常是obj3对象上的原型,指向构造器的prototype属性/是构造器的prototype属性。 2、用一个function a()作为父类构造函数,并为该函数的prototype作为父类封装变量和方法,同时使用Object.create(a.prototype)继承,子类b可使用a.call(对象,参数)的方法来调用父类的构造函数并可重写父类的函数,需注意,重写时需写在b的prototype上,这样才是对象方法,否则直接写在b上则算作静态方法 注:call()第一个参数是被调用的对象!!
    查看全部
    0 采集 收起 来源:概念与继承

    2015-10-12

  • 9-3
    查看全部
    0 采集 收起 来源:概念与继承

    2015-10-12

  • 9-2
    查看全部
    0 采集 收起 来源:概念与继承

    2015-10-12

  • 9-1
    查看全部
    0 采集 收起 来源:概念与继承

    2015-10-12

  • 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指向空对象。
    查看全部
  • bind与new bind之后,重新new一遍,会将bind的作用消除,那么函数调用时就没有bind里的参数传入,函数的this被重置为一个空对象,函数的return将被忽略,返回的将是this对象
    查看全部
  • bind与currying颗粒化,即将函数分段 bind(undefined,arg1),函数的第一个参数将被赋值为arg1,然后将该方法赋给一个变量,后面调用该变量时,传入的参数将赋值给第一个参数以后的参数,从而达到分段的目的。如果重复bind(),函数的参数将陆续被赋值。一个可绑定多个参数
    查看全部

举报

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

微信扫码,参与3人拼团

微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

友情提示:

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