发表于: 2019-03-13 20:56:22

1 721


今天完成的事情:(一定要写非常细致的内容,比如说学会了盒子模型,了解了Margin) 

JS有哪些数据类型和常用方法?

特殊的引用类型之string

var a = "Hello World!";

var b = a.substring(3);

console.log(b);  // "lo World!"

如同上边代码所示,字符串是一个基本数据值。但是,我们知道基本数据类型不是对象,在逻辑上来讲,它不应该有方法,但是上边的substring()是如何实现的呢?详细剖析的话,我们可以把它分成一下这种步骤:

var a = new String("Hello World!");//创建String类型的一个实例;

var b = a.substring(3); //在实例上调用指定的方法;

a = null; //销毁这个实例;

console.log(b);  // "lo World!"

通过上一页的代码细节的展示,我们可以看出,基本类型的字符串就变成了和对象一样。这就引入了基本包装类型的概念:每当读取一个基本类型值的时候,后台就会创建一个对应的基本包装类型的对象,从而让我们能够调用一些方法来操作这些数据。

作为特殊的引用类型,其与引用类型的的主要区别在于对象的生存期上。使用new或者其他简写的方法创建引用类型的实例,在执行六离开当前作用域之前都一直保存在内存中。自动创建的基本包装类型的对象,则只存在于一行代码执行的瞬间,然后立即被销毁了。这就意味着,不能在运行时为基本类型值添加属性和方法。

var a = "something";

a.color = "red";

console.logo(a.color); //undefined

String类型在ECMAScript中提供了一些方法,用于对字符串进行解析和操作。

//字符方法

var svalue = "Hello World!";

console.log(svalue.length);   // 12

console.log(svalue.charAt(4));  // o  首位和数组一样,index从0开始

console.log(svalue.charCodeAt(4)); //这里会显示字符编码

console.log(svalue[3]); //这个方法支持IE8+ 及所有其他浏览器,显示结果和svalue.charAt(3)一样

字符串的方法:

concat()用于对一个或者多个字符串进行拼接显示,生成新的字符串,不会影响原有字符串。

//字符串方法

var svalue = "Hello";

var result = svalue.concat("Da Wa");

console.log(result);

console.log(svalue);

var b = svalue + 'Er Wa';

相比于concat()方法,我们一般较多使用的是 “+”的方法进行字符串的拼接显示,也比较方便简单。

还有三种创建新字符串的方法:slice()、substr()、substring()。以上三种方法都可输入1到2个参数。三种方法的第一个参数都是指字符串操作的起始位置,slice()、substring()的第二个参数指的是结束位置后一个位置的,substr()的第二个参数则指的是从第一个参数开始的位置起要返回的字符的个数。这里注明一下。同时在参数为负值时的表现效果和定义也不一致,需要注意!

var a = "tianqingle";

console.log(a.slice(3)); //“nqingle”

console.log(a.substring(3)); //“nqingle”

console.log(a.substr(3)); //“nqingle”

console.log(a.slice(3, 7)); //"nqin"

console.log(a.substring(3, 7)); //"nqin"

console.log(a.substr(3, 7)); //“nqingle”

2.4 特殊的引用类型之Boolean

var aobj = new Boolean(false);

var result = aobj && true;

console.log(result);   //  true

var bvalue = false;

result = bvalue && true;

console.log(result); //  false

在布尔值运算中,fals&&true返回false,一假全假;布尔表达式中所有对象会返回true。

console.log(typeof aobj);  //object

console.log(typeof bvalue); //  boolean

console.log(aobj instanceof Boolean);   //  true

console.log(bvalue instanceof Boolean);  //  false

由于以上的原因,建议轻易不要使用Boolean对象。

2.3 特殊的引用类型之Number

Number类型是与数字值对应的引用类型。

var num = new Number(100);

console.log(num.toString());    //  "100"

console.log(num.toLocaleString());  //  "100"

console.log(num.valueOf());   //  100(数字,不是字符串,和上边有区别)

console.log(num.toFixed(3));  //  100.000

console.log(num.toExponential(3));  //    1.000e+2 (指数显示)

console.log(num.toPrecision(2));    //    1.0e+2  (根据需要显示的位数,自行判断是使用指数显示还是整数显示或者浮点数显示)   支持1到21位小数

与Boolean类型一样,同样不建议显式实例化Number类型,原因同Boolean类型一样,在使用valueOf()和instanceof()方法时会出现容易让人误解的结果,从而造成混乱。


明天计划的事情:(一定要写非常细致的内容) 

继续完成任务
遇到的问题:(遇到什么困难,怎么解决的) 

暂无
收获:(通过今天的学习,学到了什么知识)

同今天完成的任务


返回列表 返回列表
评论

    分享到