day7

1-分别说明 split slice splice join 方法的作用和参数,并举例

split 可以使用一个字符串切割另一个字符串,返回值是数组;

定义和用法

split()方法在指定的位置,将字符串分割成字符串数组, 返回字符串数组, 不会改变原字符串。

语法

stringObject.split(separator, maxLength)

参数
separator (必选) :分割字符串的指定位置(字符串或正则表达式),为(”)空字符时,字符串的每个字符都将被分割。

maxLength(可选) : 返回字符串数组的最大长度(number), 需返回数组的一部分使用此项。没有时,返回整个字符串分割的数组,不考虑长度。

var str = 'how are you ?';

str.split(' '); // ['how', 'are', 'you', '?']

str.split('o'); // ['h', 'w are y', 'u ?']

str.split('', 3); // ['h', 'o', 'w']

 

slice()方法提取部分的数组元素,返回包含提取元素的新数组,不会改变原数组。

语法

arrayObject.slice(start,end)

参数
start(必选): 指定提取部分的开始下标,可为负数(负数时从数组的尾部开始计算,如:-1为数组的最后一项,-2 指倒数第二个元素,以此类推。)

end(可选): 指定提取部分的结束下标(截取部分不包含end下标的元素,截止到下标为(end-1)的元素),没有end时,默认截取数组包含从start到数组结束的所有元素,也可为负数(负数时从数组的尾部开始计算,如:-1为数组的最后一项,-2 指倒数第二个元素,以此类推。)

var a = [10, 20, 30, 40, 50];

a.slice(1); // [20, 30, 40, 50];

 

splice (index,len)可以删除制定的数组元素;

定义和用法

splice()方法从数组中删除一个或多个元素,在删除元素位置添加一个或多个元素,返回一个包含所删除元素的新数组。注释:该方法会改变原数组。

语法

arrayObject.splice(start, deleteNumber, item1,… )

参数
start(必选):删除元素的开始位置,可为负数,负数从数组的尾部开始计算。

deleteNumber(必选):删除元素的个数(number), 为0时,不删除任何元素。

item1, …., itemX (可选):添加的新元素,没有该项时,不会添加任何元素。

var a = [10, 20, 30, 40, 50];

a.splice(1, 2, 'hello', [100, 200]); // 返回 [20, 30]

console.log(a); // [10, 'hello', [100, 200], 40, 50]

 

join 可以将数组元素用特定的连接符拼接成字符串;

定义和用法

join()方法将数组中的所有元素以特定分割符分割,放入到一个字符串中。返回一个字符串,不会改变原数组。

语法

arrayObject.join(separator)

参数
separator (可选) : 指定的分割符,不设置该项,默认以逗号分割。

 

2-举例说明强制类型转换和隐式类型转换?

强制(parseInt,parseFloat,number)
隐式(== – ===)

split() join() 的区别?
前者是切割成数组的形式,后者是将数组转换成字符串

数组方法pop() push() unshift() shift()?
Push()尾部添加 pop()尾部删除
Unshift()头部添加 shift()头部删除

JS中的call()和apply()方法的区别?

例子中用 add 来替换 sub,add.call(sub,3,1) == add(3,1) ,所以运行结果为:alert(4);

注意:js 中的函数其实是对象,函数名是对 Function 对象的引用。

function add(a,b)

{

   alert(a+b);

}

function sub(a,b)

{

   alert(a-b);

}

add.call(sub,3,1);

 

3-判断一个变量是否是数组的方法?(2-3 种)

  1. 使用Array.isArray 判断,如果返回 true, 说明是数组.
    第一种方法的原理如下:

Array.isArray = function(value) {

return Object.prototype.toString.call(value) === '[object Array]';

}

简单理解就是运用对象原型的toString方法将Array转换为字符串,之后进行比对,下面我们来详细分析下各个部分的组成。
Object.prototype.toString代表这个toString方法本来是对象原型上面的,之后call方法将toString方法中的this转换为参数value,这样传进的参数value(实际上对于此方法应该是个数组[])就可以通过原型的方法来转换为字符串

2.使用 instanceof Array 判断,如果返回true, 说明是数组

3.使用 Object.prototype.toString.call判断,如果值是 [object Array], 说明是数组

4.通过 constructor 来判断,如果是数组,那么arr.constructor === Array.(不准确,因为我们可以指定obj.constructor = Array)

 

4-什么是原型对象?

在JavaScript 中,每当定义一个对象(函数) 时候,对象中都会包含一些预定义的属性。其中函数对象的一个属性就是原型对象 prototype 。注:普通对象没有prototype,但是有_ _ proto _ _ 属性 。

原型对象其实就是普通对象 (Function.prototype 除外,它是函数对象,但它很特殊,他没有prototype 属性(前面说道函数对象都有prototype 属性))

 

5-什么是原型链?

JS 在创建对象(不论是普通对象还是函数对象) 的时候,都有一个叫做

_ _ proto _ _ 的内置属性,用于指向创建它的函数对象的原型对象 prototype 。

console.log(veb.__proto__ == person.prototype) //true

同样,person.prototype 对象也有__proto__ 属性,它指向创建它的函数对象(Object)的 prototype console.log(person.prototypr.__proto__ Object.prototype) //true

继续,Object.prototype对象也有__proto__属性,但是它比较特殊,为null

console.log(Object.prototype.__proto__) //null

我们把这个有_ _ proto _ _ 串起来的直到Object.prototype. _ _proto _ _ 为null的链叫做原型链。

posted @ 2021-02-06 17:18  雨辰~  阅读(54)  评论(0)    收藏  举报