《JavaScript权威指南》读书笔记2
3.6-3.8
这三章主要介绍了JS的包装对象、不可变的原始值和可变的对象引用、JS中的类型转换。
包装对象主要指当原始值需要调用一些方法的时候(原始值本身是不能通过"."来调用的方法或者属性值的),JS会隐性的把原始值转换成一个临时的对象,通过这个临时的对象来实现通过原始值调用方法(这个方法是原始值所对应的包装对象的方法),这个临时的对象就成为包装对象。例如,
先定义一个字符串,并通过.length(),方法来获取字符串的长度:
var a ="hello";
var b=a.length();
a作为一个字符串变量,并不是一个对象,所以他是不能通过"."的形式来调用length()方法的。但是在实际中,我们都是这样运用的。这就是因为这这个过程中JS使用了包装对象。当字符串a通过"."调用属性的时候(方法是一个属性值为函数的属性),JS会通过调用new String(a)来创建一个新的临时的对象,即包装对象,包装对象会继承字符串的所有方法,通过这个包装对象来.length()获取长度,并且返回给变量b,这个过程结束后b被赋值,包装对象会销毁,a并没有发生任何改变。
包装对象类似于JAVA中的对int的装箱后的Intiger对象。
除了字符串String(),数字和布尔值也有各自的Number()和Boolean()构造方法来调用。当然,JS除了在运算中会隐式的使用包装对象,也可以通过构造函数来显式的创建包装对象,如:
var a ='hello';
var A= new String(a);
3.7主要讲述了原始值和对象引用的区别。
JS中的原始值包括(undefined、null、布尔值、数字和字符串),原始值的值是不可更改。以字符串为例:
var a ='hello';
a.substr(,);
console.log(a);
当用substr截取a的时候,该语句会返回一个新的字符串而不是返回a,a所代表的字符串“hello”作为一个原始值他的值并没有因为调用了方法改变。
对象引用实际上是一个引用类型,他的值是可变的。
比较原始值的时候,我们比较的是他们的值的异同。而比较对象的时候,因为对象都是引用类型,我们比较的实际上是他们基对象(个人理解为内存上的地址),当他们只想同一个基对象的时候,他们才是相等的。
3.8讲述了JS的类型转换。JS会在需要的时候灵活地进行类型转换。出去字符串意外的其他原始值都支持转换为字符串,除了null和undefined在转换成对象的时候会报错意外的其他原始值都可以通过调用其对用的包装对象来转换成对象。六个假值(null、undefined、0、-0、NaN、"")会转换成布尔值false外,其他的都是真值转换成true。
当然JS也是支持显示转换的,比如除了null和undefined之外的任何值都支持toString()方法。同时JS提供了更加精确的字符串到数字、数字到字符串的比较转换,比如你可以在字符串转换成数字的时候选择基数,到底是十进制还是十六进制等,也可以选择在字符串转变成数字的时候是转变成整型还是浮点型,
对象转换成原始值则比较复杂,其中对象转换成字符串的基本步骤如下:
对象转换成数字的与转换成字符串的类型相似,不过转换数字的时候会尝试调用valueOf()方法,具体步骤如下:
另外在运算的时候,当涉及到操作一个原始值跟一个对象,当使用“+”、“==”、“!=”以及关系运算符(>、<等)时,JavaScript都会调用特殊方法,将对象转换成原始值;特别的,当涉及到日期对象的时候,JavaScript会特殊处理一下,与其他对象有所区别。日期对象的返回值不管是一个数值还是字符串,都会被直接应用,而不会再去转成数字或者字符串去。。出去这些运算符,其他运算符到特定类型的转换都比较明确,也不会特别的处理事件对象。
《JavaScript权威指南》读书笔记2的更多相关文章
- <数据挖掘导论>读书笔记11异常检测
异常检测的目标是发现与大部分其他对象不同的对象.通常,异常对象被称作离群点(Outlier). 异常检测也称偏差检测(Deviation detection),因为异常对象的属性值明显偏离期望的或者常 ...
- <数据挖掘导论>读书笔记10聚类分析续
基于原型的聚类 模糊c均值使用模糊逻辑和模糊集合论的概念,提出一种聚类方案,它很像K均值,但是不需要硬性地将对象分派到一个簇中.模糊c均值算法有时也称为FCM 混合模型聚类采取这样的访谈,簇集合可以用 ...
- <数据挖掘导论>读书笔记9聚类分析
1. 聚类分析仅根据在数据中发现的描述对象及其关系的信息,将数据对象分组. 其目标是组内的对象相互之间是相似的或者相关的,而不同组中的对象是不同的或者不相关的. 2.聚类分析的重要技术 K均值:K均值 ...
- <数据挖掘导论>读书笔记8FP树
1FP树
- <数据挖掘导论>读书笔记7 Apriori算法
Apriori算法是一种最有影响的挖掘布尔关联规则频繁项集的算法.其核心是基于两阶段频集思想的递推算法.该关联规则在分类上属于单维.单层.布尔关联规则.在这里,所有支持度大于最小支持度的项集称为频繁项 ...
- <数据挖掘导论>读书笔记4--其他分类技术
1.基于规则的分类器 2.最近邻分类器 3.贝叶斯分类器 4.人工神经网络 5.支持向量机 6.组合方法 7.不平衡类问题 8.多类问题
- <数据挖掘导论>读书笔记6关联分析的高级概念
处理联系属性: 基于离散化的方法 基于统计学的方法 非离散化方法 处理概念分层 定义在一个特定领域的各种实体或者概念的多层组织.概念分层可以用有向无环图DAG来标示. 序列模式 可选计数方案 COBJ ...
- <数据挖掘导论>读书笔记5关联分析的基本概念和算法
关联规则的强度可以用support度和confidence(置信)度来度量 关联规则发现 给定事务的集合T,关联规则发现是指找出支持度大于等于minsup并且置信度大于等于minconf的所有规则, ...
- <数据挖掘导论>读书笔记3--分类
1.分类的基本概念 分类任务就是通过学习得到一个目标函数f,把每个属性集x映射到一个预先定义的类标号y 目标函数也称为分类模型. 2. 解决分类问题的一般方法: 决策树分类法 基于规则的分类法 神经网 ...
- <数据挖掘导论>读书笔记2
1.频率和众数 frequency(vi)=具有属性值vi的对象数/m 分类属性的众数mode是具有最高频率的值. 2.百分位数 3.位置度量:均值和中位数 4.散布度量:极差和方差 绝对平均偏差 A ...
随机推荐
- Intel Core i7的整体操作
Intel Core i7的整体操作(我们也称呼为Nehalem,他的项目代码名) 主要分成2个部分-指令控制单元Instruction Control Unit(ICU),负责从存储器读出指令序列, ...
- (原)ubuntu上安装dlib
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5652791.html 参考网址: http://stackoverflow.com/questions ...
- 添加jar
file->project structure->'+'添加jar 在.gradle中配置
- Sublime 插件安装
转http://www.cnblogs.com/Rising/p/3741116.html
- mysql 只给更新表的某个字段的授权
mysql> create view v_Procuct as select sn,name from Product; Query OK, 0 rows affected (0.01 sec) ...
- InternetExplorer 表单及用户名密码提交
陆ftp或者其他类似需要输入密码的站点,可以在url中直接输入用户名密码,格式为: ftp://username:password@url 另外一种情况是,如果是表单提交的也可以通过url填写,如: ...
- Gradle+Jetty实现静态资源的热部署
本文转自http://www.cnblogs.com/huang0925/p/3302487.html --------------------------------------- 通过Gradle ...
- 1、elasticsearch简介
1.elasticsearch简介 中文帮助文档地址:http://es.xiaoleilu.com/ • Elasticsearch是一个基于Lucene的实时的分布式搜索和分析引擎.设计用于云计算 ...
- 企业OA面临的问题,以及解决问题的推荐
现在的企业不管大小都趋于软件话,而办公用的OA软件更是成为了企业中不可获取的一环,一个好的软件能让企业发展的更加顺利,而一个不合适的软件可能让公司哀声怨道反而起了反作用! OA ...
- UML图总结
UML叙述 UML文档仅仅是设计与开发人员采用UML语言进行系统分析与设计的结果,并没有给出如何进行开发和采用何种开发流程,同样也不指导如何进行面向对象设计. UML文档描述了面向对象分析与设计的结果 ...