位置: 编程技术 - 正文

Javascript基础回顾之(一) 类型(javascript教程chm)

编辑:rootadmin

推荐整理分享Javascript基础回顾之(一) 类型(javascript教程chm),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:javascript基础入门案例,javascript基础编程,javascript基础入门视频教程,javascript基础入门视频教程,javascript的返回值,javascript基础编程,javascript的返回值,javascript 基础,内容如对您有帮助,希望把文章链接给更多的朋友!

本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:) 在工作当中发现大家对Javascript的一些基本原理普遍存在这里或者那里的一知半解,所以决定先花一些时间整理一下这些基础知识和大家分享。 刚开始是打算写一篇的,但是后来写着写着就发现越来越多,所以决定还是写一个系列吧。本系列所有内容都是涉及Javascript基础的,没有时髦的玩意儿,但是我相信这些基础的东西会有助于你理解那些有趣的东西的。

Javascript基础回顾之(一) 类型 Javascript基础回顾 (二) 作用域 Javascript基础回顾之(三) 面向对象

  是的,说到Javascript我能想到的就是有趣,好玩!那么到底哪些地方好玩,为什么好玩呢?我们一起来玩玩吧,让我们玩着玩着就把Javascript理解透彻了。本文所包括的内容:

基本类型Object 与 object 基本包装类型值类型和引用类型function类型

基本类型  Javascript有5种基本数据类型(也叫简单数据类型):Undefined、Null、Boolean、Number、String 和1种复杂数据类型Object。

告诉我结果是什么?

  

好玩之一: 声明但未赋值 和 未声明的变量都是 undefined好玩之二: 只有声明并赋值为null,它的值才会null好玩之三: typeof(Object) 竟然是一个function好玩之四: typeof(null) 竟然是一个object

  Null 和Undefined这两种类型都只有一个值,即null和undefined。从逻辑上看null值表示一个空对象的指针,这就是为什么typeof(null)会返回Object。 并且undefined是派生自null值的,所以......

好玩之五: null == undefined 是成立的。

  但是想一想,Null和Undefined毕竟是两种不同的类型,即使他们是父类和子类的关系,在C#里面父类和子类也不能相等啊,不是么?其实null == undefined就是硬性规定,ECMA规定它们做相等性测试的时候要返回true所以他们返回true了。就好像我们在C#里面重写了equlas 方法一样。

  至于为什么 typeof(Object) 返回 function,请看下面的Object与object。

Object 与 object  Javascript高级程序一书中说到 ”函数在ECMAScript中是对象,不是一种数据类型”。 好像是译者加上去的,既然typeof(Object) 都返回 function了,为什么还说function不是一种数据类型呢?Object 和 function之间是什么关系呢?

  在我看来,Object其实就是一个function,或者我们说Object是一个函数的名字比较容易理解,官方名称是构造函数。

在上面的代码中, 如果我们把Object当作一个函数名那么 new Object() 和 new Person() 性质就是一样的了。通过 new 操作符得到一个 function 实例, 这里面的function就已经是类的概念了。所以这里的Object其实是一个function。这样我们就可以解释为什么typeof(Object)是function了。

  那我们在上面所说的复杂类型Object,它又是什么呢?

Object是function,但是 new Object() 则是 object。到这里面就搞清楚了首字母大写的这个Object是一个function,而首字母小写的这个object它才是一种数据类型。所以我建议大家以后说到类型的时候全部用小写,我们的基本类型是 string, number, boolean。大写的String, Number, Boolean 它们只是一个函数而已。而调用这些函数所得到的结果是,没错,是object。

  最后,我们是找不到Undefined 和Null 这两个函数的,所以这两种数据类型就是undefined和null(为什么typeof(null)会得到object已经说了)

  

好玩之六: Object 不是object类型

基本包装类型  我们上面讲了string, number, boolean是基本类型,基本类型和复杂类型最大的区别就是基本类型没有prototype属性。也就意味着你不能给基本类型随意的添加方法或属性。

同时我们还说到了首字母大写的这个String是一个function,所以new String("str")得到的是一个object而不是一个string,这里大家要搞清楚了。我们的问题来了,为什么基本类型string会有一些初始的方法呢?它不是基本类型么?方法是怎么加上去的?

Javascript基础回顾之(一) 类型(javascript教程chm)

str是string类型的变量,记住它不是一个对象。它是不应该有方法的,那么它的contact方法从何而来呢?这里后台在调用str.contact的时候实际上偷偷的完成了几步操作:

基于str创建一个String类型的实例 在实例上调用指定的方法 销毁这个实例

  将这三个步骤想象成这样:

我们可以把String,Number,Boolean叫做封装类型, 他们就好像我们在C#里面的自定义类型一样。 但是不要忘记了我们真正的基本类型是string, number, boolean。用String所构造出来的对象是属于object类型的。

好玩之七: String 不是 string值类型和引用类型  我们上面讲到了5种基本类型:string, number, boolean, null, undefined 全部是值类型。Javascript中只有一种引用类型,也就是我们的复杂类型object。那么有人可能会好奇,那么像Date, Regex, Arrary这些是什么类型呢 &#; 其实这里面的概念有一点混淆,如果你很好的理解了上面的Object 和object之间的区别,可能会比较好理解一点。 我们可以把function 看成是C#里面 class关键字,我们可以用class定义类,同样我们可以在Javascript中用function来定义类。

在C#中定义类:

在Javascript定义类:

你发现区别了么?如果我们在Javascript中用function定义类,他们的实例将永远是object, 包括原生的那些Date, Array, RegExp。

好玩之八: 全部都是object  如果全部都是object的话,那我怎么能知道这个对象到底是不是Date或者Person的实例呢?借助于instanceof 就可以了。

终级好玩:我用function创建了一个Person类,然后用new得到一个Person的实例,结果它却不是Person类型的。 这就好像生了个孩子,供他吃穿,但是他却不跟你姓,这得有多么无私伟大才干得出来的事啊!function类型  function类型有两种,函数声明和函数表达式。函数声明具有优先级,可以在声明之前被使用,表达式却不能。

除此之外,函数表达式还可以像object一样,随意的添加属性。

但是,函数表达式到底是个什么玩意儿呢? 不能实例化,但是可以随意的添加属性,它和object有什么区别?我们在上面说过,object其实就是一个对象实例。

我们还有大写的Function, 它和function之间的关系会不会和String 和string 一样?( 以下内容比较费脑力,慎入!)

我们上面调用Function去构造了一个函数。既没有用函数声明,也没有用函数表达式,不管怎么说这是第三种创建函数的方法,虽然肯定没有多少人用它,因为它不管是参数,还是函数体全部都是字符串,这写起来还不让人崩溃么?

  

看出什么猫腻来了么?所谓的函数表达式,其实是用一个变量接收了一个function的对象而已。而这个function的对象则是Function的实例。包括用函数声明写出来的函数也是Function的实例。

但是,等等,我们前面说到的String, Date, Array都是function类型的,那Function也是么?

我们前面说所有function的实例都是object类型的,但是对于Function 这个奇异的function来说,它的实例仍然是function类型的,并且我们可以用Function的实例再创造实例。原来我们所说的用function创造出来的类,它不是类,而是Function的实例。

我们再结合自执行函数理解一下,也许会好一点:

实际上我们上面的function(){} 会返回给我们一个function的实例,那么我们当然可以直接执行它了。这么看来function应该是Javascript里面最特别的类型了。

好玩之十:所有的function都是Function的实例好玩之十一:Function 本身也是一个function

最后我们来总结一下:

Javascript中有5种基本类型:string, number, boolean, null, undefined。 另外一种复杂类型object 其实是function的实例。 除了Function这个系统里面的function构造器以外,其它所有function的实例都是object类型的。 Date, Array, RegExp 这些都是function类型,同时也是Function的实例。同理,它们的实例也是object类型的。

总结完了,好像也不多,不是么?关于function其实javascript是非常强大的一个功能,作用域以及面向对象的一些知识也是和它息息相关的,我们下一篇就来看看作用域的问题。谢谢大家的关注!

Javascript基础回顾之(二) js作用域 本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:)在工作当

Javascript基础回顾之(三) js面向对象 本来是要继续由浅入深表达式系列最后一篇的,但是最近团队突然就忙起来了,从来没有过的忙!不过喜欢表达式的朋友请放心,已经在写了:)在工作当

JavaScript字符集编码与解码详谈 一、字符集1)字符与字节(Character)字符是各种文字和符号的总称,包括乱码;一个字符对应1~n个字节,一字节对应8位,每位用0或1表示。2)字符集(

标签: javascript教程chm

本文链接地址:https://www.jiuchutong.com/biancheng/376043.html 转载请保留说明!

上一篇:前端编码规范(3)JavaScript 开发规范(前端编码规范 性能)

下一篇:Javascript基础回顾之(二) js作用域(javascript教程chm)

  • 超标准能按小规模纳税人标准纳税吗?
  • 工程预缴税款流程
  • 合并报表营业收入怎么算出来的
  • 废旧物资回收经营范围
  • 装修期内免租金可以办理营业执照吗
  • 采购部付款申请单和财务付款流程
  • 公司名字开错了,认证过了怎么处理
  • 无形资产摊销是增加还是减少
  • 公司客车高速费如何抵扣进项税?
  • 金税三期房产税源信息更改后
  • 清洁费免税吗
  • 增值普通发票税率怎么算
  • 销售货物运费的增值税率
  • 退役士兵税收优惠政策
  • 委托加工费的增值税计入成本吗
  • 分公司交总公司管理费怎么做账
  • 固定资产清理怎么做账务处理出售
  • 车辆租赁怎么报税做账
  • 发票抬头写个人税号怎么写
  • 销售使用过的板房如何缴税?
  • 个人所得税缴纳标准起征点
  • 华为手机记事本app
  • 财务软件上线需注意什么
  • 升级鸿蒙系统会解除限制充电60
  • 货物运输业增值税专用发票可以抵扣吗
  • 内置管理员无法激活
  • php中通过什么属性可以获取数组中元素的个数
  • 固定资产增加应计入什么
  • 抵扣进项税额的几种情况是
  • 私营独资企业的税收规定
  • 成本票不够怎么交税
  • 房租费可以一次性摊销吗
  • 淘宝运费险费用很高
  • 加计抵减可以补提本年的税吗
  • 存货跌价准备的结转会计分录
  • 土石方收据图片
  • SQL Server 2008 R2 应用及多服务器管理
  • sqlserver2008连接
  • 增值税和个人所得税怎么算
  • 航空电子客票行程单是发票吗
  • 收到的加盟费要交税吗
  • 增值税纳税申报实训报告
  • 购买服务费用
  • 劳务派遣公司开票内容写什么
  • 生产成本科目期末怎么结转
  • 增值税留底注销时怎么办
  • 三个月 租房
  • 职工福利费相关文件有哪些
  • 进项税额转出的几种情况
  • 成本费用会计分录
  • 冲减实收资本是什么意思
  • 费用科目可以在借方吗
  • 有形资产负债率多少合适
  • 新办企业增多
  • 购买新发票的时候要带旧发票去吗?
  • 如何整理装订记账凭证
  • win 9x
  • WINDOWS系统无法正常启动
  • xp系统直接开机
  • 如何在windows中对硬盘进行分区
  • 键盘和鼠标冲突
  • mac系统制作
  • 盗版win10可以用win10商店吗
  • PHP 7.0.0 Alpha 2 发布
  • bootstrap响应式导航条模板使用详解(含下拉菜单,弹出框)
  • 安卓网页开发工具
  • Perl的Mail::POP3Client模块和Gmail通信实例
  • cocos2dx4.0教程
  • json对象如何取值
  • Knockout visible绑定使用方法
  • 利用漏洞每天获利万元
  • python做开发
  • animate怎么整个图层移动
  • 呼和浩特市契税2021年新规
  • 分摊费用怎么计算公式
  • 河南个人社保查询登录入口官网
  • 税务如何稽查
  • 湖南耕地占用税标准
  • 税务局的纳税服务有哪些
  • 江苏税务局网上预缴税流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设