day7

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

split方法用于把字符串分割成字符串数组,接收一个分隔符参数,分隔符可以是用于分解字符串或正则表达式的字符。

1
2
3
4
5
6
7
var str = "Hello World";
var bySpace = str.split(" ");
//  ["Hello", "World"]
 
var otherString = "How9are7you2today";
var byDigits = str.split(/d/);
//  ["How", "are", "you", "today"]

  slice方法可以从已有数组中返回指定元素。它接受两个参数,第一个规定从何处开始选取,第二个规定从何处结束选取(不包括该元素)。如果没有传参,则默认为从数组的开           头开始到结尾结束,这是复制整个数组的简单方式。slice返回一个新数组,不会修改原始数组

var arr = ["Cat", "Dog", "Tiger", "Zebra"];
var newArray = arr.slice(1, 3);
// 将新数组设置为 ["Dog", "Tiger"]

splice()接收的前两个参数基于调用splice()数组中元素的索引。记住,数组的索引是从 0 开始的(zero-indexed),所以我们要用0来指示数组中的第一个元素。splice()的第一个参数代表从数组中的哪个索引开始移除元素,而第二个参数指示要从数组中删除多少个元素.

1
2
3
4
let array = ['today''was''not''so''great'];
array.splice(2, 2);
// 从第 3 个元素开始,删除 2 个元素
// 该数组等于 ['today', 'was', 'great']

  join()用来把数组中的所有元素放入一个字符串,并通过指定的分隔符参数进行分隔。

1
2
3
4
5
6
7
8
9
var arr = ["Hello""World"];
var str = arr.join(" ");
// Sets str to "Hello World"
 
 
function sentensify(str) {
  return str.split(/W/).join(' ');
 }
sentensify("May-the-force-be-with-you");

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

   强制类型转换:

        转换为string:  toString() / String()

        转换为Boolen:  Boolen();

        转换为number: number() /  parseFloat() / parseInt()

   隐式类型转换:

字符串加数字,数字就会转成字符串。

数字减字符串,字符串转成数字。如果字符串不是纯数字就会转成NaN。字符串减数字也一样。两个字符串相减也先转成数字。

乘,除,大于,小于跟减的转换也是一样。

隐式转换的其他例子

复制代码
console.log(10+'20') //2010

console.log(10-'20')//-10 number
console.log(10-'one') //NaN not a number
console.log(10-'101a') //NaN
console.log(10*'20') //200 number
console.log('10'*'20') //200 number
console.log(20/'10') //2 number
console.log('20'/'10') //2 number
console.log('20'/'one') //NaN
复制代码

   "=="

undefined等于null

字符串和数字比较时,字符串转数字

数字为布尔比较时,布尔转数字

字符串和布尔比较时,两者转数字

console.log(undefined==null) //true
console.log('0'==0) //true 字符串转数字
console.log(0==false) //true 布尔转数字
console.log('0'==false) //2个都转成数字
console.log(null==false) //false
console.log(undefined==false)//false

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

 ***** Array.isArray() *

  通过es6的Array.isArray()判断

let arr = []
console.log(Array.isArray(arr))   //true

  ***** Object.prototype.toString.call  

var arr = []
console.log(Object.prototype.toString.call(arr))   //[object Array]
console.log(Object.prototype.toString.call(arr)===Object.prototype.toString.call([])) //true

  instanceof 
  instanceof用来判断一个变量是否是一个对象的实例,我们可以通过instanceof来判断是否为数组

var arr = []
 
console.log(arr instanceof Array )   //true

constructor

 instanceof会将继承Array的对象判断为数组,也可以通过直接判断变量的构造函数是否等于Array来判断

let arr = [1,2,3]
console.log(arr.constructor===Array) //true

4- 什么是原型对象?

    在js中,分为普通对象和函数对象.

     在js中,创建一个函数A, 那么浏览器就会在内存中创建一个对象B,而且每个函数都默认会有一个属性 prototype 指向了这个对象( 即: prototype的属性的值是这个对象 )。这个对象B就是函数A的原型对象,简称函数的原型。这个原型对象B 默认会有一个属性 constructor 指向了这个函数A ( 就是说:constructor属性的值是函数A ).

5- 什么是原型链

当访问一个对象的某个属性时,会先在这个对象本身属性上查找,如果没有找到,则会去它的__proto__隐式原型上查找,即它的构造函数的prototype,如果还没有找到就会再在构造函数的prototype__proto__中查找,这样一层一层向上查找就会形成一个链式结构,我们称为原型链

原文地址:https://www.cnblogs.com/Natural-numbers/p/14483379.html