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

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
492人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • 并不是 所有对象的 原型链 上都会有 Object.prototype var obj2 = Object.create(null); obj2.__proto__ //undefined obj2.toString //undefined
    查看全部
    0 采集 收起 来源:再谈原型链

    2015-05-18

  • 在父类的prototype 属性上绑定一些需要共享的方法和属性 Person.prototype.hi = function(){ console.log("Hi,my name is "+this.name+", I'm "+this.age+" years old now."); }; 先在构造器内 .call() 父类 function Studeng(name,age,className){ Person.call(this,name,age); this.className = className; } 然后使用 Object.create(pro) 方法创建一个新对象,这个对象的原型是 .create(pro) 的参数 pro Student.prototype = Objcet.create(Person.prototype); Student.prototype.constructor = Student; 可以在子类上覆盖父类的方法 Student.prototype.hi = function(){ console.log("Hi, my name is "+this.name+", I'm "+this.age+" years old now, and from "+this.className+"."); }; Javascript在原型链上的查找,当找到后不会在向上一级寻找,直接返回 var bosn = new Student("Bosn",27,"Class 3,Grade 2"); bosn.hi(): //调用的是Student.prototype.hi
    查看全部
    0 采集 收起 来源:概念与继承

    2018-03-22

  • Foo.prototype { constructor:Foo, __proto__:Object.prototype, x:1 } prototype 的作用是在使用 new 创建实例时,将这个对象属性作为实例的原型 ------------ prototype 是函数上预设的一个对象属性,而原型是对象的原型
    查看全部
    0 采集 收起 来源:概念与继承

    2015-05-18

  • Foo.prototype 是Foo 函数的一个对象,它是一个属性,而不是我们经常说的原型。 函数会有一个叫 portotype 的属性,这个属性是一个对象 var obj3 = new Foo(); // this 会指向一个空对象,而这个空对象的原型会指向构造器(Foo)的portotype 属性
    查看全部
    0 采集 收起 来源:概念与继承

    2015-05-18

  • 在初始化阶段, AO(global) = { x: <ref to function>, a: undefined, b: undefined } 故而一开始 alert(x); 返回function 执行阶段,x 先后被赋值为 10 ,20 第二次alert(x); 因为 函数声明已经前置了,故 x == 20 if(true),a 被赋值为1 Javascript没有块作用域,尽管 b没有被赋值,但是其还是被声明了,值为undefined.
    查看全部
  • AO 初始化后,执行阶段 AO(test) = { a:10, b:20, c:10, d:<reference to FunctionDeclaration "d">, e:function _e{} } 因为 (function x(){});是是函数表达式,x 不会影响 AO,所以被忽略了。当这个匿名函数是立即调用的,它会有自己的一个执行上下文,但因为被()括起来,并没有直接调用,实际上就被忽略掉了。
    查看全部
  • 01. AO 为执行上下文,所以在调用 test(10); 语句后开始初始化填充 02.填充顺序为: 函数参数(未传入,初始化为undefined) -> 函数声明(命名冲突,覆盖其他) -> 变量声明(初始化值为undefined,命名冲突,被忽略) 03. AO的填充是在初始化阶段,而不是执行阶段 var c = 10; // 其中 = 为赋值语句,在初始化并不执行,故AO 中 c:undefined 04. 函数声明导致函数前置了 05. 函数表达式不会影响AO ,即 _e 不会存在在AO 中 06. 即使初始化阶段,func 是函数声明,但在执行阶段, func = 1,最后输出 1 function foo(x,y,z){function func(){};var func = 1;console.log(func);}; foo(100);
    查看全部
  • VO(functionContext) === AO; AO,函数中的概念,表示激活对象 可以理解为不同执行阶段下的不同的东西 -------------- AO 在函数调用时,会有一个特殊的 arguments 在初始化的阶段时,arguments 会被放置到 AO 对象 在arguemnts 初始化完成后,这个AO 对象又会被称为VO对象
    查看全部
  • 在全局作用域下,有个VO(globalContext),在第一行代码执行之前,JS引擎会将对应的全局设定初始化到这个VO里。 window 指向这个VO本身,因为VO只是个概念,它实际上不可见的。 可以通过window 间接地拿到这个对象
    查看全部
  • 变量对象(Variable Object,缩写VO)是一个抽象概念中的“对象”,它用于存储执行上下文中的: 1.变量 2.函数声明 3.函数参数 ------------- 全局执行上下文: VO(gobalContext){ a:10, test: <ref to function> }; test函数执行上下文: VO(test functionContext){ x:30, b:20 }
    查看全部
  • 执行上下文是一个栈的结构
    查看全部
  • 类型检查:1.typeof (number boolean function undefined object) 2.instanceof (主要判断对象是否是一个类的实例) 3.Object.prototype.toString() 4.constuctor 5.duck type
    查看全部
  • 01.每次函数调用时,都会有一个对应的执行环境,也称执行上下文 02.对整个全局作用域,在进入第一行代码前,也会有个全局执行上下文 03.同样一个函数,在被调用多次时,每次都有不同的执行上下文
    查看全部
  • 读写对象属性: 属性异常、删除属性、检测属性、枚举属性 一、属性读写 其中一般用.操作符,如果属性是动态的则用[]。 另外for in也行,但是容易出问题,它可能会将原型链上的属性遍历出来,而且这个顺序是不一定的
    查看全部
  • !function(){ //do sth }(); +function(){ //do sth }(); ----------- 使用 ! 或 + 把函数变成函数表达式,而不是函数声明 省略 ! 或 + ,以function()开头,会被认为是函数声明,前置处理,留下(); 会报错
    查看全部

举报

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

微信扫码,参与3人拼团

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

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