3.4.6 - 3.4.7

字符串的特点

ECMAScript中的字符串是不可变的,也就是说,字符串一旦创建,它们的值就不能改变

例如:

var lang = "Java";

lang = lang + 'Script';

我是这样理解这个过程的:

 

当执行 var lang = "Java",会申请一片内存,这个内存里保存的就是字符串Java,并把这片内存的地址赋值给变量 lang

当执行 lang = lang + 'Script',会再申请一片新的内存用来存放字符串 'Script' ,然后再申请一片新的内存用来存放 lang + ‘Script’ 的计算结果,并把存放计算结果的那片内存地址赋值给变量 lang

所以字符串不可变,指的是一旦你申请了一片内存用来存放字符串后,从此以后那片内存地址上的内容你是无法修改的

lang = lang + 'Script' 容易误以为是这样的,误以为字符串的修改就是在原来那片内存上进行替换操作

 

 

转换为字符串

把一个值转换为一个字符串有两种方式:toString()方法和转型函数String()

toString()方法:

1、几乎每个值都有的 toString() 方法,除了 null 和 undefined 值。字符串也有一个 toString() 方法,该方法返回字符串的一个副本。

2、多数情况下,调用 toString() 方法不必传递参数,但是在调用数值的 toString() 方法时,可以传递一个参数:输出数值的基数。

3、默认情况下,toString() 方法以十进制格式返回数值的字符串表示。而通过传递基数,toString() 可以输出任意有效进制格式表示的字符串值。

 

String()转型函数

1、这个函数能够将任何类型的值转换为字符串

2、String() 函数遵循下列转换规则:

  • 如果值有 toString() 方法,则调用该方法(没有参数)并返回相应的结果
  • 如果值是 null,则返回'null'
  • 如果值是 undefined,则返回 'undefined'

  

 

Object类型

ECMAScript中的对象其实就是一组数据和功能的集合

对象可以通过执行 new 操作符后跟要创建的对象类型的名称来创建

而创建 Object 类型的实例并为其添加属性和(或)方法,就可以创建自定义对象,如 var o = new Object()

仅仅创建 Object 的实例并没有什么用处,但关键是要理解一个重要的思想:Object 类型是所有它的实例的基础。换句话说,Object 类型所具有的任何属性或方法也同样存在于更具体的对象中。

 

Object的每个实例都具有下列属性和方法:

Constructor  保存着用于创建当前对象的函数。对于前面的例子而言,构造函数(constructor)就是 Object()
hasOwnProperty(propertyName)

用于检查给定的属性在当前对象实例中(而不是在实例的原型中)是否存在。其中作为参数的属性名必须以字符串形式指定,

例如:o.hasOwnProperty("name")

isPrototypeOf(object) 用于检查传入的对象是否是另一个对象的原型
propertyIsEnumerable(propertyName) 用于检查给定的属性是否能够使用 for-in 语句来枚举
toLocaleString() 返回对象的字符串表示,该字符串与执行环境的地区对应
toString() 返回对象的字符串表示
valueOf() 返回对象的字符串、数值或布尔值表示。通常与 toString() 方法的返回值相同

 

posted @ 2018-03-11 02:22  有山有水有鬼  阅读(105)  评论(0编辑  收藏  举报