2022-09-28 星期三

The things one is most proud of are often the hardest things to do. You must not doubt it.

1. JS创建对象的方式 【JS】

参考答案

  1. 通过 Object()方法来创建 let obj = new Object({a:1})
  2. 通过字面量创建对象 let obj ={a:1}
  3. 通过自定义函数创建对象

function Image(width,height){
    this.width=width;
    this.height=height;
    this.content=function{
    console.log("图片的高是"+this.height+"宽是"+this.width);
    }
  }
 var image=new Image("300px","300px");
 image.content();

  1. 通过工厂模式创建对象
function createPerson(name, age, gender) {
  //创建一个新的对象
  var obj = new Object()
  //向对象中添加属性
  obj.name = name
  obj.age = age
  obj.gender = gender
  obj.sayName = function () {
    alert(this.name)
  }
  return obj
}
  1. 通过原型模式
function Person(){};
Person.prototype.name="Mary";
Person.prototype.age=18;
Person.prototype.job="teacher";
Person.prototype.sayName=function (){
    alert(this.name);
}
var person1=new Person(); 
person1.sayName();   //Mary-来自原型

var person2= new Person(); 
person2.sayName();   //Mary-来自原型

2. `["1", "2", "3"]`.map(parseInt) 输出? 【JS】

参考答案

[1,NaN,NaN] 解析:

  1. map 函数的 callback 参数:自动传入三个参数 currentValue(当前被传递的元素) index(当前被传递的元素的索引) array(调用 map 方法的数组)

  2. parseInt 方法接收两个参数 第三个参数["1", "2", "3"]将被忽略。

parseInt 的第二个参数为 0 时,作为十进制数字的字符串解析;
parseInt 的第二个参数为 1 时,解析结果为 NaN;
parseInt 的第二个参数在 2—36 之间时,如果第一个参数(除空白以外),不属于指定进制下的字符,解析结果为 NaN。 parseInt("3", 2)执行时,由于"3"不属于二进制字符,解析结果为 NaN。

3. position的全部属性 【CSS】

参考答案

值 描述
absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
fixed 生成绝对定位的元素,相对于浏览器窗口进行定位。 元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。
relative 生成相对定位的元素,相对于其正常位置进行定位。 因此,"left:20" 会向元素的 left 位置添加 20 像素。
sticky CSS3 新增,粘性定位,相对于最近的一个拥有“滚动机制”的祖先上(当该祖先的overflow 是 hidden, scroll, auto 或 overlay时,即不是 visible 时)。 它的行为就像 position:relative 而当页面滚动超出目标区域时,它的表现就像 position:fixed,它会固定在目标位置。
static 默认值。没有定位,元素出现在正常的流中 (忽略 left、top、right、bottom 或者 z-index 声明)。
inherit 规定应该从父元素继承 position 属性的值。

4. 如何删除一个cookie?【JS】

参考答案

Cookie并不提供修改、删除操作。如果要修改某个Cookie,只需要新建一个同名的Cookie来覆盖原来Cookie。

  1. 如果没有显示设置cooke过期时间,cookie不会存入本地硬盘,仅存留于内存中。
    当我们关闭浏览器的时候,cookie会自动删除,生命周期无需我们操控。

  2. 删除Cookie的代码示例

//取cookies     
function getCookie(name){
  let arr = document.cookie.match(new RegExp("(^| )" + name + "=([^;]*)(;|$)"));
  if (arr != null) return unescape(arr[2]); 
  return null;
}
//删除cookie
function delCookie(name){
  var exp = new Date();
  exp.setTime(exp.getTime() - 1);
  var cval = getCookie(name);
  if (cval != null) 
    document.cookie = name + "=" + cval + ";expires=" + exp.toGMTString()+";path=/";
}
delCookie("name");
document.cookie;
  1. 使用三方库js-cookie->Cookies.remove('name', { path: '' })

5.XML与JSON的区别?【JS】

参考答案

xml和json都是数据传输的载体,并且具有跨平台跨语言的特性,区别如下:

  1. 数据体积方面。JSON 相对于 XML 来讲,数据的体积小,传递的速度更快些。
  2. 数据交互方面。JSON 与 JavaScript 的交互更加方便,更容易解析处理,更好的数据交互。
  3. 数据描述方面。JSON 对数据的描述性比 XML 较差。
  4. 传输速度方面。JSON 的速度要远远快于 XML。