var sum = 1 + 2 + 3 + 4 + 5 + 6 + 7 + … + 997 + 998 + 999 + 1000
我在这里简单说下string对象的使用吧。
首先是字符串的定义,我们通常用双引号或单引号来定义字符串,如:
双引号定义字符串
var stringVar = “使用双引号声明字符串”
单引号定义字符串
var stringVar = ‘使用单引号声明字符串’
需要注意的有几点:
1、不能混合使用单、双引号。错误的写法如:
var stringVar = ‘不合法的字符串声明。”
2、引号不能嵌套:如
var stringVar = ‘Don’t mix your quotes.’
但可以这样写:
var stringVar = “Don’t mix your quotes”
3、转义字符,如果字符串中双引号和单引号都有,也可以用string对象保存,但这里就要用到转义字符’\’
var stringVar = “he said \“that’s fine,\”and left.”
转义字符后面的单引号或双引号不会试图去结束一个字符串的定义;而表示它是字符串的一部分。
刚刚我们提到,string对象可以操作字符串,这是因为它提供了一些属性和方法。
最常见的属性就是length属性,它返回字符串的长度,这里我主要说几个常用的字符串的方法。
1、 toUpperCase()方法,将字符串中的字符全部转换成大写。
var phrase = “This is a simple phrase.”
console.log(phrase.toUpperCase()) // THIS IS A SIMPLE PHRASE.
2、 toLowerCase()方法,将字符串中的字符全部转换成小写。
3、 split()方法,split方法将字符串对象拆分,并将拆分出的字符串通过数组返回。如下示例
var phrase = “This is a simple phrase.”
var words = phrase.split(“ ”)
//words中的元素有五个,分别为This、is、a、simple、phrase。
split方法接收一个字符串参数,参数表示拆分字符串的位置;示例中的参数为空格,表示split将在空格的位置将phrase对象拆分成多个字符串。但并不是每次拆分都是用空格,也可以是逗号,句号等其它字符或字符串进行拆分。
4、 indexOf()方法,它能找出String 对象内第一次出现的子字符串的位置。若没有查找的字符串,则返回-1。
5、 lastIndexOf()方法,它用于查找字符串对象最后一次出现的子字符串。若没有查找的字符串,则返回-1。
string对象除了这些属性和方法,还允许字符串和字符串进行比较,连接等操作。所以说string是一个相当强大的对象。如果你想深入了解JavaScript的数据类型可以上秒秒了解下JavaScript的相关课程。
1.字符串创建方式
2.string以及任何的js数据都有两种身份:
1)表示自身数据类型
2)表示对象类型身份:对象类型身份给每种数据类型提供了很多的操作方法,便于对数据进行操作
总之就是js中一切皆是对象,可以对其进行相应的操作。
3.字符串对象属性lenght。
string.lenght
表示字符串包含字符的个数
4.String对象方法
2)、 chartCodeAt (获取字符串指定下标字符的UniCode编码)
3)、 indexOf (获取指定字符下标首次出现的位置)
字符串.indexOf('指定字符') 获取指定字符下标,没有则返回-1
字符串.indexOf('指定字符',指定下标) 从指定下标处开始获取指定字符下标,没有则返回-1
可以用来判断html的class属性中是否包含某些类名。
4)、 lastIndexOf用法与indexOf完全相同,只是lastIndexOf是从后往前查找
5)、字符串的比较:
字符串大小比较实际上是比较两个字符串的ASCII编码值。1-9ASCII编码值逐渐增大,a-z编码值逐渐增大。
比较方法:先比较两个字符串的首位,首位相同则比较下一位,以此类推。
6)、字符串的截取方法substring
字符串.substring(起点下标,终点下标),可以截取到起点截取不到终点。起点终点位置颠倒也可以
字符串.substring(起点下标);起点及后面都可以截取到
字符串.substring(负数),如果传入参数为负数,会直接将负数参数置为0
7)、字符串的截取方法Slice
字符串.slice(起点下标,终点下标),可以截取到起点截取不到终点。起点终点位置颠倒不可以
字符串.slice(起点下标),起点及后面都可以截取到
如果参数为负,会将参数与原字符串的lenght相加得到结果作为参数,加完后还为负数,则置为零。
8)、字符串大小写转换方法:toUpperCase()toLowerCase()
9)、字符串的切割方法:split
字符串.split('切割标识')
以切割标识进行切割,将字符串切割分开,放入数组钟,并将数组返回。
切割标识会被切掉,不会保留到数组中,如果不传切割标识则将整个字符串放入数组作为一个数组项。
例子:例如微信小程序扫码进入页面传的参数为233_affadsgafd,则通过split("_")截取,scene[0]的值为233,scene[1]的值为affadsgafd
10)、替换字符串方法:replace()
字符串.replace('要替换的字符部分','用来替换的字符部分')
11)、删除字符串两端空格方法:trim()
字符串.trim()
删除字符串两边空格,一般用在注册用户名或密码的时候,防止用户输入空格;
trim只删除字符串两端空格,不删除字符串中间的空格
js中的基础类型有6种
5种基础类型:undefined null String Number Boolean
1中引用类型:Object
基础类型的string有如下定义方式:
这三种方式有什么区别吗?
str1、str2是普通的字符串,str3是个对象?什么原因呢?
用 typeof 验证一下
用 instanceof 验证一下
可以看出 str3 确确实实是个String对象了
再来看个有意思的事,如果给String加上自定义方法和属性呢?
虽然 str1、str2不是对象,但可以用String上的方法和属性
再看,如果直接给str1、str2定义方法和属性呢?
可以看出str1、str2是不能定义自己的方法和属性的,而str3可以
这就能看出 js 的神奇部分了,什么原理呢?
来看包装对象和原始资料类型
上面看到的str1、str2即为原始资料类型,str3为包装对象,通过typeof可以看出
但str1、str2不能自己定义属性和方法,却可以用String的属性和方法
总结一下
1、第一种和第二种方法定义出来的是原始资料类型,并储存于栈中,并向包装对象(new ..())借来方法和属性.
2、第三种是 包装对象,栈中储存堆指针,堆中储存内容。
关于堆、栈、指针的问题,咱们继续学习