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

JavaScript深入浅出

Bosn 资深架构师
难度中级
时长 5小时28分
学习人数
综合评分9.60
492人评价 查看评价
9.8 内容实用
9.5 简洁易懂
9.5 逻辑清晰
  • //下面进行类型检测的情况,就是说有五种方法,

    undefined

    //1、首先是第一种方法

    undefined

    typeof 100

    "number"

    typeof trueLog

    "function"

    typeof [1,2]

    "object"

    typeof (1,23)

    "number"

    typeof NaN

    "number"

    typeof null

    "object"

    //这里面就会奇怪为什么这个null会和object相同,这里面是如果null的类型是null的话会出现大量的问题,所以由于历史原因,就改成object

    undefined

    //2、但是当我们想判断的更加细节一点,比如说到底是什么object呢,这个时候我们就会用到obj instanceof Object

    undefined

    //这里面要求了只能判断object这个,基本格式就是obj instanceof Object (它的作用就是左边这个对象的原型链上是否有右边这个构造函数的属性)

    undefined

    [1,2] instanceof Array

    true

    //下面介绍一种特殊的

    undefined

    function Person(){}

    undefined

    function Student(){}

    undefined

    Student.prototype = new Person();

    Person {}__proto__: constructor: ƒ Person()__proto__: constructor: ƒ Object()hasOwnProperty: ƒ hasOwnProperty()isPrototypeOf: ƒ isPrototypeOf()propertyIsEnumerable: ƒ propertyIsEnumerable()toLocaleString: ƒ toLocaleString()toString: ƒ toString()valueOf: ƒ valueOf()__defineGetter__: ƒ __defineGetter__()__defineSetter__: ƒ __defineSetter__()__lookupGetter__: ƒ __lookupGetter__()__lookupSetter__: ƒ __lookupSetter__()get __proto__: ƒ __proto__()set __proto__: ƒ __proto__()

    Student.prototype.constructor = Student

    ƒ Student(){}

    function Student(){}

    undefined

    var bos = new Student()

    undefined

    bos instanceof Student

    true

    var one = new Person()

    undefined

    one instanceof Person

    true

    one instanceof Student

    false

    //这个是因为其实student下面有一个prototype叫做person

    undefined

    //3、object.prototype.toString.apply([]);

    undefined

    Object.prototype.toSti

    undefined

    Object.prototype.toString.apply([])

    "[object Array]"

    //但是上面要注意到在IE678中的null是object的类型

    undefined

    Object.prototype.toString.apply(function()[])

    VM10959:1 Uncaught SyntaxError: Unexpected token '['

    //4、还有就是constructor这个查询方式,这个其实是一个指向原型的一个构造器,是任何一个对象都有的,但是它是可以被改写的

    undefined

    //5、duck type:

    undefined

    //前三者的区别

    undefined

    //1、typeof比较适合基本类型的判断,但是要注意的就是null会返回为object,但是可以用严格等于的方式来判断是不是null

    undefined

    //2、另外就是判断对象用instanceof ,还有就是

    undefined

    Object.prototype.toString.apply([1])

    "[object Array]"

    查看全部
  • //隐士转换

    undefined

    num = 10;

    10

    num-""

    10

    num + ''

    "10"

    num-''

    10

    //==的运算

    undefined

    //在用==时候会把类型进行一定程度的转换

    undefined

    '1.23' = 1.23

    VM2590:1 Uncaught SyntaxError: Invalid left-hand side in assignment

    '1.23' = 1.23;

    VM2597:1 Uncaught SyntaxError: Invalid left-hand side in assignment

    '1.23' == 1.23;

    true

    0==false

    true

    null==undefined

    true

    new Object() = new Object();

    VM2750:1 Uncaught SyntaxError: Invalid left-hand side in assignment

    new Object() == new Object();

    false

    //严格等于

    undefined

    //会先判断类型是否相等,如果不相同返回false,相等的话,要注意这个时候null和undefined不想等了,但是NaN是和任何的东西包括他自己都不想等的

    undefined

    5675:1 Unchecked runtime.lastError: The message port closed before a response was received.

    //还要注意就是在相似的时候只是简单进行类型的转换,而到了严格等于的时候就要求进行在没有转换的情况下依旧想等

    undefined

    [1,2] == [1,2];

    false

    //上面的很奇怪对不对,其实是不想等的,就和两个new Object一样,都是不能相等的,即便==

    undefined

    //比较重要的一点是==和===的区别,当类型相同的时候二者是没有区别的,但是当类型不同的时候首先情况下是,当number和string比较的时候,会把string转换成number,将对象转换成相应的基本类型

    查看全部
  • undefined

    32 + 32

    64

    32+“32”

    VM1362:1 Uncaught SyntaxError: Invalid or unexpected token

    32+"32"

    "3232"

    32-"32"

    0

    //上面是一些隐形的转换逻辑

    undefined

    //常见的转换类型有number string bool null undefined

    undefined

    查看全部
  • var 


    查看全部
  • 也就是说这里面有三种查看元素类型的方式,一个是typeof,一个是instanceof还有一个prototype原型属性

    查看全部
  • 函数声明和函数表达式

    查看全部
  • 数组操作:

    unshift:数组头部添加元素

    shift:数组头部去除元素

    push:数组尾部添加元素

    pop:数组尾部移除元素

    查看全部
  • js对象的构造图

    查看全部
  • 对象属性的一些属性。

    查看全部
  • 两个空对象是不会===的,除非x===x

    查看全部
  • js类型检测:

    1、typeOf在判断基本类型和函数对象非常方便。问题在于不能判断更深层的Object类型,譬如:数组类型、null类型


    2、判断对象类型,更常用的是 obj instanceof Object。其底层原理是:判断左边的变量对象的原型链中是否有右边的构造函数的prototype属性

    3、Object.prototype.toString.apply(),能判断出Array、Funtion、Null、Undefined。但是ie8以下不兼容


    查看全部
  • 1、js是弱类型语言,弱类型体现在创建A类型变后后,又可创建B类型变量。('33' - 33 = 0),字符串'33'被看作为数字33,从而 = 0;

    2、js的数据类型分基本类型和复杂类型。基本类型(number,string,boolean,null,undefined)复杂类型(object:Function、Date、Array....)

    查看全部
  • http://img1.sycdn.imooc.com//6017b58e0001771310560595.jpg

    get set 方法 修改属性的不同

    查看全部
  • 函数是一种特殊的对象

    查看全部
  • 完整的继承图
    查看全部
    0 采集 收起 来源:再谈原型链

    2021-01-28

举报

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

微信扫码,参与3人拼团

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

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