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

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
492人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • [[global]] ={Math:<...>,String:<...>,isNan:function(){[Native Code]}........} GlobalContextVO (VO===this===global) String(10);//[[global]].String(10); window.a = 10 //[[global]].window.a=10;
    查看全部
  • 由于声明Student.prototype=new Person(),Student.prototype的[proto]标签就指向了Person.prototype,所以,bosn的[proto]的[proto](原型的原型)就是Student.prototype的原型Person.prototype。
    查看全部
  • JavaScript是弱类型语言,其有五种原始类型,分别是number、string、boolean、null、undefined,和一种对象类型(object),包括我们熟悉的function、array、data等。。。
    查看全部
  • 解释器在解释一个语句时,如果以function开头,就会理解为函数声明,而前面加一个!可以让解释器理解为函数表达式,这样就可以立即调用了。 use strict 可以写在整个函数的的里面,也可以写在整个函数的的最上面,也可以在上面加点东西啥的 1、严格模式,不允许用 with 语句。否则会报syntax error语法错误 2、一般可以隐式创建全局变量,直接进行赋值,但是严格模式会报错。 3 普通模式下:arguments[0..n]为函数fun(a,b,c)的参数的数组表现形式,严格模式下:arguments对象变为参数静态副本,即只能获得实际参数的值不能改变实际参数。ps:若得到的参数为对象,则仍可以借助arguments.x对对象的属性进行修改并产生影响。 4 在严格模式下,delete不可配置属性:Object.defineProperty(obj,'a',{configurable:false}});不能使用,会报错。 5 对象字面量属性名重复中,一般以最后一个属性为准,但在严格模式下会报错 6 严格模式下不能使用八进制字面量。 7 eval,arguments变为关键字,不可作为变量名和函数名。 8 eval独立作用域 9一般函数调用时(不是对象的方法调用,也不使用apply/call/bind等修改this)this指向null,而不是全局对象。若使用apply/call,当传入null或undefined时,this将指向null或undefined,而不是全局对象。 10 试图修改不可泄属性(writable=false),在不可扩展的对象上添加属性时报TyoeError,而不是忽略。 11 arguments.caller , arguments.callee被禁用
    查看全部
  • val = +val;目的是为val转化成数字 a +=a 则是自身加。
    查看全部
  • @JavaScript深入浅出——-第1章 数据类型 1-3 隐式转换 ①+和- +:第一种表示字符串连接 第二种表示数字相加 -:只表示数字相减 巧用+/-规则转换类型 num-0 >> 数字 num+" " >> 字符串 ②===严格等于与== a===b 严格等于=== 现比较类型 再比较内容 类型不同,返回false ; 类型相同: null===null undefined===undefined NaN不等于NaN (和任何比较都不等包括本身) new Object()==new Object() [1,2]==[1,2] ==等于 类型不同,上市类型转化和比较 0==false 1==true null==undefined
    查看全部
  • @JavaScript深入浅出——-第1章 数据类型 1-3 隐式转换 ①+和- +:第一种表示字符串连接 第二种表示数字相加 -:只表示数字相减 巧用+/-规则转换类型 num-0 >> 数字 num+" " >> 字符串 ②===严格等于与== a===b 严格等于=== 现比较类型 再比较内容 类型不同,返回false ; 类型相同: null===null undefined===undefined NaN不等于NaN (和任何比较都不等包括本身) new Object()==new Object() [1,2]==[1,2] ==等于 类型不同,上市类型转化和比较 0==false 1==true null==undefined
    查看全部
  • 在 JavaScript 中,判断一个变量的类型尝尝会用 typeof 运算符,在使用 typeof 运算符时采用引用类型存储值会出现一个问题,无论引用的是什么类型的对象,它都返回 “object”。这就需要用到instanceof来检测某个对象是不是另一个对象的实例。 另外,更重的一点是 instanceof 可以在继承关系中用来判断一个实例是否属于它的父类型。 例如: function Foo(){} Foo.prototype = new Aoo();//JavaScript 原型继承 var foo = new Foo(); console.log(foo instanceof Foo)//true console.log(foo instanceof Aoo)//true 上面的代码中是判断了一层继承关系中的父类,在多层继承关系中,instanceof 运算符同样适用。
    查看全部
  • 1、属性访问,点操作或者中括号(内部自动转成字符串),建议用点。但是如果是要拼的话用中括号。用for in会把原型链的读出来。 2、访问不存在属性,进行原型链查找,末端找不到,会undefined。 3、写属性,有的话就修改,没的话就新创建并赋值。 4、delete 删除属性,重复删除同一个属性,仍然返回true。所以delete并不代表操作成功或者失败了,而是说还有没有这个属性值。prototype不能被删除。 5、configurable:是否可配置。getOwnPrototypeDescriptor(obj,属性) 6、var 定义的都不可以删除。函数和函数的函数都不可以被delete掉。隐式创建的变量可以删除(不推荐的语法)。 7、in操作符会向原型链向上查找的,hasOwnProperty自己有没有(用在for in判断过滤原型上的属性)。 8、Enumerable:是否可枚举。 9、object.defineProterty创建的对象他对应的属性默认false。而字面量和new和赋值而创建的对象的默认的是true 10、!=undefined。就是不等于null和undefined、
    查看全部
  • 对象构造: 除了本身被赋予的值之外,对象还有几个隐藏标签: proto:对象的对象属性prototype上的赋值,一般是该对象种类的不变属性或方法,例如 new一个猫,猫的颜色和年龄可以作为一般属性,而猫叫,猫吃鱼这种不常变动的属性可以在prototype上赋值,可以节省内存。 class:对象的种类 extensible:是否允许该对象继续增加新的属性 另外对象的值(如 x=1),也有对应的属性或方法,提供一些访问权限的控制 writable:是否可写 enumerable:是否能被删除 configurable:是否能够枚举 value:值 get/set:获取/设置属性
    查看全部
  • 'use strict' 严格模式,声明在文件中或方法中(作用域不同)
    查看全部
  • var a = b =1 隐士的创建了一个全局变量B
    查看全部
  • js 没有块级作用域。for(var i=0;i<10;i++){} 在函数外部依然可以得到i且i=10
    查看全部
  • 块语句
    查看全部
  • js 有全局作用域 和函数作用域(函数的局部变量只有函数内部可以访问) eval作用域 //注意 用 new Function/Function() 访问不到构造器定义域的范围变量
    查看全部

举报

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

微信扫码,参与3人拼团

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

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