ReactNative入门学习笔记——ECMAScript基础知识

一.ECMAScript 原始值和引用值

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

1.原始类型:

ECMAScript 有 5 种原始类型(primitive type),即 Undefined、Null、Boolean、Number 和 String。

①.Undefined 类型:

undefined类型只有一个undefined类型。声明未初始化的时候,变量默认就是underfined。

例如:

var abc;

此时,只申明变量,未初始化,该变量将被赋予underfined。

②.Boolean类型:

boolean有两个值 true 和 false (即两个 Boolean 字面量)。

③.Null类型:

另一种只有一个值的类型是 Null,它只有一个专用值 null,即它的字面量。值 undefined 实际上是从值 null 派生来的,因此 ECMAScript 把它们定义为相等的。

alert(null == undefined);//输出 "true"

尽管这两个值相等,但它们的含义不同。undefined 是声明了变量但未对其初始化时赋予该变量的值,null 则用于表示尚未存在的对象。如果函数或方法要返回的是对象,那么找不到该对象时,返回的通常是 null。

④.Number 类型:

这种类型既可以表示 32 位的整数,还可以表示 64 位的浮点数。直接输入的(而不是从另一个变量访问的)任何数字都被看做 Number 类型的字面量。

⑤.String类型:

String 类型的独特之处在于,它是唯一没有固定大小的原始类型。
字符串字面量是由双引号(")或单引号(')声明的。

var str1 = "ES6";

var str2 = 'ES6';

都是正确的。

2.引用类型:

引用类型通常叫做类(class),也就是说,遇到引用值,所处理的就是对象。

对象是由 new 运算符加上要实例化的对象的名字创建的。

var obj = new Objecr();


①.Object对象:

ES中所有对象都由这个对象继承而来,Object对象中所有属性和方法都会出现在其他对象中。

Object对象具有属性:

constructor

对创建对象的函数的引用(指针)。对于 Object 对象,该指针指向原始的 Object() 函数。

Prototype

对该对象的对象原型的引用。对于所有的对象,它默认返回 Object 对象的一个实例。


Object 对象还具有几个方法:

--hasOwnProperty(property):

判断对象是否有某个特定的属性。必须用字符串指定该属性。(例如,o.hasOwnProperty("name"))

--IsPrototypeOf(object):

判断该对象是否为另一个对象的原型。

--PropertyIsEnumerable:

判断给定的属性是否可以用 for...in 语句进行枚举。

--ToString():

返回对象的原始字符串表示。对于 Object 对象,ECMA-262 没有定义这个值,所以不同的 ECMAScript 实现具有不同的值。

--ValueOf():

返回最适合该对象的原始值。对于许多对象,该方法返回的值都与 ToString() 的返回值相同。

注释:上面列出的每种属性和方法都会被其他对象覆盖。


②.Boolean对象

Boolean 对象是 Boolean 原始类型的引用类型。

要创建 Boolean 对象,只需要传递 Boolean 值作为参数:

var oBooleanObject = new Boolean(true);


③.Number 对象

Number 对象是 Number 原始类型的引用类型。

valueOf()方法:可以得到数字对象的Number原始值。

toFixed() 方法:可以返回的是具有指定位数小数的数字的字符串表示。

var numberObj = new Number(15);

alert(numberObj.valueOf() );                     //输出15;

alert(numberObj.toFixed(2));                    //输出15.00


④.String对象

String 对象是 String 原始类型的对象表示法。

String 对象的 valueOf() 方法和 toString() 方法都会返回 String 类型的原始值。

String对象的属性:

length属性:字符串的字符个数。

String对象的方法:

charAt() 方法:返回的是包含指定位置处的字符的字符串。

charCodeAt() 方法:返回的是包含指定位置处的字符的字符代码。

var str = new String("hello world");

alert(str.charAt(1));                              //输出 "e"

alert(str.charCodeAt(1));                     //输出 "101"


concat() 方法:用于把一个或多个字符串连接到 String 对象的原始值上。

var str = new String("hello world");

var str2 = str.concat("123") ;

alert(str2);                                //输出“hello world123”


indexOf()方法:从字符串的开头(位置 0)开始检索指定的子串在另一个字符串中的位置。

lastIndexOf() 方法:从字符串的结尾开始检索指定的子串在另一个字符串中的位置。

var str = new String ("hello world");

alert(str.indexOf("e"));                        //输出 "1"

alert(str.lastIndexOf("e"));                  //输出 "9"

localeCompare() 方法:对字符串进行排序。

该方法有一个参数 - 要进行比较的字符串,返回的是下列三个值之一:

-如果 String 对象按照字母顺序排在参数中的字符串之前,返回负数。

-如果 String 对象等于参数中的字符串,返回 0。

-如果 String 对象按照字母顺序排在参数中的字符串之后,返回正数。

var str = new String ("b");

alert(str.localeCompare("a"));            //输出 "1"

alert(str.localeCompare("b"));            //输出 "0"

alert(str.localeCompare("c"));            //输出 "-1"

slice() 和 substring()方法:字符串截取这两种方法返回的都是要处理的字符串的子串,都接受一个或两个参数。第一个参数是要获取的子串的起始位置,第二个参数(如果使用的话)是要获取子串终止前的位置(也就是说,获取终止位置处的字符不包括在返回的值内)。如果省略第二个参数,终止位就默认为字符串的长度。

不同之处:对于负数参数,slice() 方法会用字符串的长度加上参数,substring() 方法则将其作为 0 处理(也就是说将忽略它)。

例如:

var oStringObject = new String("hello world");

alert(oStringObject.slice("3"));                          //输出 "lo world"

alert(oStringObject.substring("3"));                   //输出 "lo world"

alert(oStringObject.slice("-3"));                         //输出 "rld"

alert(oStringObject.substring("-3"));                 //输出 "hello world"

alert(oStringObject.slice("3, -4"));                     //输出 "lo w"

alert(oStringObject.substring("3, -4"));             //输出 "hel"

toLowerCase()、toLocaleLowerCase()、toUpperCase() 和 toLocaleUpperCase()方法:4 种方法用于执行大小写转换。

从名字上可以看出它们的用途,前两种方法用于把字符串转换成全小写的,后两种方法用于把字符串转换成全大写的。

toLowerCase() 和 toUpperCase() 方法是原始的,是以 java.lang.String 中相同方法为原型实现的。

toLocaleLowerCase() 和 toLocaleUpperCase() 方法是基于特定的区域实现的(与 localeCompare() 方法相同)。在许多区域中,区域特定的方法都与通用的方法完全相同。

一般来说,如果不知道在以哪种编码运行一种语言,则使用区域特定的方法比较安全。

var oStringObject = new String("Hello World");

alert(oStringObject.toLocaleUpperCase());     //输出 "HELLO WORLD"

alert(oStringObject.toUpperCase());                //输出 "HELLO WORLD"

alert(oStringObject.toLocaleLowerCase());    //输出 "hello world"

alert(oStringObject.toLowerCase());               //输出 "hello world"

你可能感兴趣的:(ReactNative入门学习笔记——ECMAScript基础知识)