字符串对象和值类型与引用类型

第一部分、字符串对象

1.创建方式

(1)直接创建

var 变量名 = "字符串"

(2)通过String对象创建

var 变量名 = new String("字符串");

2.length

字符串默认的属性length,用来记录字符串的长度

var str = new String("西安邮电大学");

console.log(str.length);     //结果为6

3.函数

(1)根据字符返回位置

  1. indexOf(value):返回参数value在字符串中首次出现的位置。若返回-1,表示未找到value。
  2. lastIndexOf(value):返回参数value在字符串中最后出现的位置
var str = "HelloWorld";

console.log("位置:",str.indexOf("o"));    //结果为4

console.log("位置:",str.lastIndexOf("o"));    //结果为6

:要求在一组字符串中,找到所有指定元素出现的位置以及次数。

var str = "Hello World,Hello JavaScript";

var index = str.indexOf("o");    //找到"o"第一次出现的位置

var num = 0;

while (index != -1) {

    console.log(index);
    index = str.indexOf("o",index+1);    //继续找下一个"o"
    num++;
}

console.log("出现的次数:",num);

(2)根据位置返回字符

  1. charAt(index):返回index位置上的字符
  2. charCodeAt(index):返回index位置上的字符的ASCII码值
  3. str[index]H5中新增的方法.把字符串看作是数组
var str = "Hello JavaScript";

console.log(str.charAt(1));    //输出字符串中索引值为1的字符,结果为e

console.log(str.charCodeAt(5));    //输出字符串中索引值为5的ASCII码,结果为32(空格)

console.log(str.charCodeAt(7));    //输出字符串中索引值为7的ASCII码,结果为97(a)

console.log(str[0]);    //结果为H

(3)其他方法

  1. concat(str1,str2,…):用于连接多个字符串
  2. slice(start,[end]):切片,截取startend之间的字符串。若没有 参数end,则截取start到串末尾的字符串
  3. substring(start,[end]):截取子串,作用和slice类似,但不接受负数
  4. substr(start,[length]):截取从start开始的连续length个字符
  5. toLowerCase():字符串中的字母转成小写
  6. toUpperCase(): 字符串中的字母转成大写
  7. split(seq,[,limit]):将字符串按指定的分隔符分割成数组
  8. replace(str1,str2):用str2替换str1
var s1 = "abc";

var s2 = "def";

var s3 = "123";

var str = "javaScript程序设计";

console.log(s1.concat(s2,s3));

console.log(str.slice(4));    //截取4到串末尾的字符

console.log(str.slice(4,10));    //截取4~10(不包含10)之间的字符

console.log(str.slice(-1,));    //截取最后一个字符

console.log(str.substring(0,10));

console.log(str.toLocaleLowerCase());    //所有字母转成小写
console.log(str.toUpperCase());    //所有字母转成大写

var phone = "135-1234-5678";

var arr = phone.split("-");

console.log(arr);

console.log(str.replace("java","Action"));   

运行结果如下

abcdef123
Script程序设计
Script
计
javaScript
javascript程序设计
JAVASCRIPT程序设计
[ '135', '1234', '5678' ]
ActionScript程序设计

第二部分、值类型和引用类型

  1. JavaScript中,简单数据类型(如字符串型、数字型、布尔型、undefined、null)又称为值类型复杂数据类型(对象)又称为引用类型
  2. 引用类型的特点是,变量中保存的仅仅是一个引用的地址,当对变量进行赋值时,并不是将对象复制了一份,而是将两个变量指向了同一个对象的引用。
var student = {

    name:"关羽",
    gender:"男",
    age:28
};

var s2 = student;

在这里插入图片描述
obj1obj2两个变量指向了同一个对象后,如果给其中一个变量(如obj1)重新赋值为其他对象,或者重新赋值为其他值,则obj1将不再引用原来的对象,但obj2仍然在引用原来的对象。

var obj1 = { name: '小明', age: 18 };

var obj2 = obj1;

// obj1指向了一个新创建的对象
obj1 = { name: '小红', age: 17 };

// obj2仍然指向原来的对象

console.log(obj2.name);    // 输出结果:小明

注意:当一个对象只被一个变量引用的时候,如果这个变量又被重新赋值,则该对象就会变成没有任何变量引用的情况,这时候就会由JavaScript的垃圾回收机制自动释放。

如果在函数的参数中修改对象的属性或方法,则在函数外面通过引用这个对象的变量访问时的结果也是修改后的。

function f1(obj){

    obj.name = "川普";
}

var obj2 = {

    name:"奥巴马",
    age:56
}

console.log("函数调用前的对象:",obj2);

f1(obj2);

console.log("函数调用后的对象:",obj2);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值