字符串相关知识点和this指向

字符串标记

1.标签模板:它本质上不是模板而是函数的另一种调用形式。
标签:就是事先封装好的函数
参数:它后面写的字符串

例如:

**这一步就相当于模板标签
var name = "工藤新一";
        var boy = "绅士男孩";
        var girlfrend = "名字叫毛利兰的女朋友";
注意:这个可以用一个函数封装起来,然后直接调用,这个就是标签

var str = `他的名字是${name},我是一个帅气的${boy},我有一个漂亮的${girlfrend}
$前面的就是数组里字符串

参数:标签模板后面所接的字符串

以${}作为分隔线,将固定的字符串放进数组里,然后${}里面的变量作为后面的参数

2.标记模板
参数1:被插入的变量分割而成的字符串数组
参数2:被插入的变量(可以有很多个)

例如:

var name = "工藤新一";
        var boy = "男孩";
        var girlfrend = "名字叫毛利兰的女朋友";

封装的函数
function intro(parts){
	console.log(parts);
	打印结果:
	["", ",我的名字是", ",我是一个", "帅气的", ",我有一个漂亮的", ""]
	0: ""
	1: ",我的名字是"
	2: ",我是一个"
	3: "帅气的"
	4: ",我有一个漂亮的"
	5: ""

被插入的变量(可以有很多个)如果写了第一个(parts),这几个就不用写了
 			 // console.log(a1);
            // console.log(a2);
            // console.log(a3);
            // console.log(a4);

	
console.log(arguments); 
打印结果:
["大家好", "工藤新一", "很绅士的", "男孩", "名字叫毛利兰的女朋友"]
0: (6) ["", ",我的名字是", ",我是一个", "帅气的", ",我有一个漂亮的", "", raw: Array(6)]
1: "大家好"
2: "工藤新一"
3: "很绅士的"
4: "男孩"
5: "名字叫毛利兰的女朋友"

 var res =Array.prototype.slice.call(arguments,1);
            console.log(res);
      打印结果:
 ["大家好", "工藤新一", "很绅士的", "男孩", "名字叫毛利兰的女朋友"]
 0: "大家好"
1: "工藤新一"
2: "很绅士的"
3: "男孩"
4: "名字叫毛利兰的女朋友"


 var s = "";
            for(let i = 0;i

字符串里面新增的API

1.indexof
//indexof()方法:查找字符串中是否包含某个字符串
例如:

参数1:需要查询的目标元素的首个字符串(即使后面再出现一样的,也只查询到第一个出现的结果)
参数2:从第几个索引开始查(数字)

  var str = "工藤新一是帅的不接受反驳";
*****返回找到目标元素第一个字符串位置的索引(从0开始), 如果没找到就返回 -1
        console.log(str.indexOf("新一")); //2
        console.log(str.indexOf("新二")); //-1
        console.log(str.indexOf("接受")); //8
        console.log(str.indexOf("接收")); //-1
        
        console.log(str.indexOf("新一",2)); //2
         console.log(str.indexOf("新二",2)); //-1

         console.log(str.indexOf("接受",3)); //8
        /console.log(str.indexOf("接受",5)); //8
         console.log(str.indexOf("接收",3)); //-1

        注意点:
        这个方法无法查询到数组里面包含空值 或者 包含NaN的,因为判断会出错  只能使用includes()方法
        var arr = [11,22,33,44,NaN];
        console.log(arr.indexOf(NaN)); //-1

         var arr1 = new Array(5);
        /console.log(arr1.indexOf(undefined)); //-1
    indexof方法:
        参数1:需要查询的目标元素的首个字符串(即使后面再出现一样的,也只查询到第一个出现的结果)
        参数2:从第几个索引开始查(数字)
      返回值:返回找到目标元素第一个字符串位置的索引(从0开始), 如果没找到就返回 -1
    注意:这个方法无法查询到数组里面包含空值 或者 包含NaN的,因为判断会出错  只能使用includes()方法

includes
includes()方法:检测字符串或者数组中是否包含某一个子字符串或者元素
例如:

   var str3 = "工藤新一是帅的不接受反驳";
        console.log(str3.includes("新一")); //true
        console.log(str3.includes("新二")); //false
        console.log(str3.includes("接受")); //true
        console.log(str3.includes("接收")); //false

        console.log(str3.includes("新一",2)); //true
        console.log(str3.includes("新二",2)); //false

        console.log(str3.includes("接受",8)); //true
        console.log(str3.includes("接受",9)); //false
        console.log(str3.includes("接收",8)); //false

        注意点:
        var arr = [11,22,33,44,NaN];
        console.log(arr.includes(NaN)); //true

        var arr1 = new Array(5);
        console.log(arr1.includes(undefined)); //true

includes方法:
参数1:需要查询的目标元素的首个字符串
参数2:从第几个索引开始查(数字)
返回值:返回类型为布尔类型
找到目标元素就返回 true 没有找到就返回false

includes 和 indexof的区别:返回值不同 且includes更实用 indexof局限性大

startswith

startswith : 判断是否以某一个字符串 开头
参数1:要找到的目标元素
参数2::表示 从索引为几 的字符串开始查找
endswith : 判断是否以某一个字符串 结尾
参数2: 表示 从索引为几 及之前的 元素开始查找(不算自身)
返回值:为布尔类型
例如:

var sayHi = "hello world!";
    console.log(sayHi.startsWith("hello",3)); //false

    console.log(sayHi.endsWith("!",11)); //false   因为第11个是字符是d,d在!之前,所以没有找到  如果d在感叹号之后  才是对的
    console.log(sayHi.endsWith("!",16)); //true   因为 !在第16之前  所以找得到

this

1.普通函数里面的this,谁调用this,this就指向谁,这个里面的this是在调用的时候才确定的
例如:
这个里面的this是指向window,因为没有调用

function stu(){
console,log(this); 
}
stu();

//这里的this就指向obj,因为obj调用了c()
看调用,就注意有没有 . 和()

var obj = {
a : "新一",
b : "小兰",
c:function(){
console.log(this)
}
obj.c();

你可能感兴趣的:(字符串相关知识点和this指向)