new 操作符具体干了什么?

69 阅读1分钟

一省:HTML

9. 什么是浏览器内核?浏览器内核有哪些?

浏览器内核: 通常所谓的浏览器内核也就是浏览器所采用的渲染引擎,渲染引擎决定了浏览器如何显示网页的内容以及页面的格式信息。

常见的浏览器内核:

  1. Gecko:早期被Netscape和Mozilla Firefox浏览器浏览器使用;
  2. Trident:微软开发,被IE4~IE11浏览器使用,但是Edge浏览器已经转向Blink;
  3. Webkit:苹果基于KHTML开发、开源的,用于Safari,Google Chrome之前也在使用;
  4. Blink:是Webkit的一个分支,Google开发,目前应用于Google Chrome、Edge、Opera等;

二省: CSS

9. CSS 单位中 px、em 和 rem 的区别?

  1. px是像素(pixel)的意思,绝对单位。像素 px 是相对于显示器屏幕分辨率而言的,是一个虚拟长度单位,是计算机系统的数字化图像长度单位;
  2. em是相对长度单位,会随着父元素字体大小改变而改变。
  3. rem是相对单位,会随着根元素字体大小改变而改变。
<html lang="en">
<head>
  <style>
    html {
      font-size: 30px;
    }
    .father {
      font-size: 10px;
    }
    .son {  
      width: 10em;
      height: 10em;
      background: tomato;
    }
    .bro {
      width: 10rem;
      height: 10rem;
      background: skyblue;
    }
  </style>
</head>
<body>
  <div class="father">
    <div class="son"></div>
    <div class="bro"></div>
  </div>
</body>
</html>

三省:JavaScript

9. new 操作符具体干了什么?

  1. 创建一个空对象。
  2. 将新对象的__proto__赋值为构造函数的prototype属性。
  3. 将this指向新对象,执行构造函数内部的代码。
  4. 如果构造函数返回非空对象,则返回该对象,否则返回this。
//使用new操作符
function Person(obj) {
  this.name = obj.name;
  this.age = obj.age;
}
const p1 = new Person({
  name: "Jack",
  age: 20
})
console.log(p1);//Person {name: 'Jack', age: 20}
//不使用new来实现
function Person(obj) {
  var o = {}
  o.__proto__ = this.Person.prototype
  o.name = obj.name;
  o.age = obj.age;
  return o
}
const p2 = Person({
  name: 'Mick',
  age: 18
})
console.log(p2);//Person {name: 'Mick', age: 18}