0202-面试题

// 1. 分别说明split slice splice join方法的作用和参数,并举例?
    // slice      /*        slice() 方法提取部分的数组元素,返回包含提取元素的新数组,不会改变原数组
      语法:          arrayObject.slice(start, end)         参数:           start(必选):开始下标,可以为负数(负数时从数组的尾部开始计算)           end(可选):指定提取部分的结束下标(截取部分不包括end下标的元素,截止到下标为(end-1)的元素                       没有end时,默认截取到数组包含start到数组结束的所有元素,也可以为负数           当start和end之间,无任何元素时,返回[]数组      */      var array = [10,20,30,40,60]      console.log(array.slice(1));      console.log(array.slice(-3));      console.log(array.slice(5));      console.log(array.slice(1,4));      console.log(array.slice(1,-2));
     var str = 'good morning'      console.log(str.slice(1,-3));
     /*        splice(数组)       splice()方法从数组中删除一个或多个元素,在删除元素位置添加一个或多个元素,       返回一个包含删除元素的新数组。注意:该方法会改变原数组              语法:       arrayObject.splice(start,deleteNumber,item1,...)         start(必选): 删除元素的开始位置,可为负数,负数从数组的尾部开始计算         deleteNumber(必选):删除元素的个数,为0时,不删除任何元素         item1,...,itemN:添加的新元素,没有该项时,不会添加任何元素
     */     array.splice(1,2,'hello')     console.log(array);     array.splice(1,0,[200,100])     console.log(array);     /*        split(字符串)       split()方法在指定的位置,将字符串分割成字符串数组,返回字符串数组,不会改变原字符串       语法:stringObject.split(separator, maxLength)       separator(必选):分割字符串的指定位置(字符串或正则表达式),为("")空字符时,字符串的每个字符都将被分割。       maxLength(可选):返回字符串数组的最大长度(number),需返回数组的一部分使用此项。没有时,返回整个字符串分割的数组,不考虑长度。     */     var str1="How are you doing today?"
    document.write(str1.split(" ") + "<br />")     document.write(str1.split("") + "<br />")     document.write(str1.split(" ",1))
    /*        join(数组)       join()方法将数组中的所有元素以特定分隔符分割,放入到一个字符串中。返回一个字符串,不会改变原数组。
      语法: arrayObject.join(separator)       参数:         separator(可选): 指定的分割符,不设置该项,默认以逗号分割     */    var arr = [1,2,3,4,5,6,'aa']    console.log(arr.join("+"));       //  2. 举例说明强制类型转换和隐式类型转换?   /*      强制 parseInt(),parseFloat,Number()     隐式 ==, !!   */   //  3.判断一个变量是否是数组的方法?    /*      1.instanceof        例:var a = []     a instanceof Array  如果是true 则是数组
    2.原型prototype + isPrototypeOf()     isPrototypeOf() 函数 : 用于指示对象是否存在于一个对象的原型链中。     如果存在返回true,反之返回false。该方法属Object对象,由于所有的对象都继承了Object的对象实例,     因此几乎所有的实例对象都可以使用该方法。如果variable的原型链中存在Array对象,就会返回true,也就说明variable是数组类型。
    3.数组方法 isArray()     Array.isArray(variable)
  */   // 4. 什么是原型对象?  什么是原型链?   /*    proto: 隐式原型,所有对象都具有该属性,一个对象的隐式原型指向构造该对象的构造函数的原型。 prototype: 显示原型,每个函数在创建后都拥有一个prototype属性,该属性指向函数的原型对象。
  #作用 proto:是用来构造原型链,用于实现基于原型的继承。保证了实例可以访问到构造函数原型中定义的属性和方法。 prototype: 用来实现基于原型的继承与属性的共享。
  #二者关系 隐式原型指向构造该对象的构造函数(constructor)的prototype。
  #图解 原型图解
  构造函数Foo() 构造函数的原型属性Foo.prototype指向了原型对象,在原型对象中的所有属性和方法,都可以通过构造函数Foo声明的实例(f1,f2)共享。
  原型对象Foo.prototype Foo.prototype保存着所有实例共享的属性和方法,原型对象中有一个constructor属性,指向构造函数。
  实例 f1、f2 是通过Foo声明的实例,这两个对象中都保存这__proto__属性,指向该实例构造函数的原型对象(Foo.prototype),因此f1、f2就可以访问构造函数原型对象中的所有属性和方法。
  注意   构造函数Foo()除了是方法外也是对象,也有__proto__属性,指向它的构造函数的原型对象,即Function.prototype。 Function(),Object()也是同理。 最终的Object.prototype的__proto__指向null。
  #实例
  let one = {a:0}; let two = new Object();
  one.proto === one.prototype // true two.proto === two.prototype // true one.toString === one.proto.toString // true
  所有的内置对象都是由Object()创建而来。   如: Array.prototype.proto === Object.prototype // true
  构造函数: function Foo(){} let test = new Foo(); Foo.prototype.proto === Object.prototype // true test.proto === Foo.prototype // true
  原型继承:
  继承实例 functiong Boo(){} Foo.prototype = new Boo(); Foo.porototype.proto === Boo.prototype // true Foo.prototype.constructor === Boo // true
  继承对象 Foo.prototype = { a: 1, b: 2 } Foo.prototype.proto === Object.prototype // true 以上两种情况都是重写了Foo.prototype实现的继承,所以Foo.prototype.constructor也被重写。   0202-面试题

 

 

  */
上一篇:js中的prototype、__proto__与constructor 的关系


下一篇:云原生 API 网关,gRPC-Gateway V2 初探