《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 ...
随机推荐
- Python学习笔记6(列表生成式)
1.生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3 ...
- (原)vs2013编译boost1.60库
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5394236.html 参考网址: http://www.cnblogs.com/chuncn/arch ...
- Lucene学习总结之六:Lucene打分公式的数学推导
在进行Lucene的搜索过程解析之前,有必要单独的一张把Lucene score公式的推导,各部分的意义阐述一下.因为Lucene的搜索过程,很重要的一个步骤就是逐步的计算各部分的分数. Lucene ...
- ajax 传值 中文乱码问题
使用encodeURI编码内容 var Path = encodeURI("中文.xls"); url: "ashx/Data.ashx?Path =" + P ...
- Sublime text3使用技巧及快捷键
一.快速查找文件Crtl+P(Goto->Goto Anyghing) 在打开的搜索框中输入文件名按Enter键即可. 提示:1.支持文件夹+文件名的搜索,比如 "js/main.js ...
- 评论PK投票功能的手机版
ajax投票.点赞.回复,投票后自动转到查看投票结果,投票结果进度条动画显示 地址:http://files.cnblogs.com/files/macliu/hyw_wap.rar 效果图: 首页:
- 利用7z实现一键解压
目的: 实现双击zip,7z,rar等文件时自动解压,解压完毕后自动打开文件夹. 工具: [本文末尾附有所有工具的下载地址] 7z.exe types 步骤: 新建"7z-自动解压" ...
- 如果设置Keil从C代码编译出来的hex文件地址从0x8000开始
和MON51的设置一样,这样作:1.把Startup.a51拷贝到工程目录加入工程,修改125行的 CSEG AT 0 为 CSEG AT 0X8000 ...
- Linux和windows动态库
转载:http://www.cnblogs.com/chio/archive/2008/11/13/1333119.html 态链接库技术实现和设计程序常用的技术,在Windows和Linux系 统中 ...
- 关于DLL模块导出函数
当然以前我知道有一个.def文件的,里面写的都是需要导出的函数,以为与__declspec(dllexport)作用是一样的.但是今天看公司项目源码的时候才知道,它们两个导出方法是有一定的区别的,编译 ...