当前位置: 首页 > article >正文

【每日前端面试-02】

在 JavaScript 中,如何创建一个对象,并且为该对象添加属性和方法?请举例说明。
  1. 对象字面量方式:
    let person = {
      name: "张三",
      age: 25,
      sayHello: function() {
        console.log(`Hello, I'm ${this.name} and I'm ${this.age} years old.`);
      }
    };
    
  2. 使用 new Object() 方式:
    let person = new Object();
    person.name = "李四";
    person.age = 30;
    person.sayHello = function() {
      console.log(`Hello, I'm ${this.name} and I'm ${this.age} years old.`);
    };
    
  3. 构造函数方式:
    function Person(name, age) {
      this.name = name;
      this.age = age;
      this.sayHello = function() {
        console.log(`Hello, I'm ${this.name} and I'm ${this.age} years old.`);
      };
    }
    let person1 = new Person("王五", 35);
    

记忆口诀:“创建对象有几招,字面量法最明了,new Object 也能搞,构造函数更有效”

简述一下 JavaScript 中 this 关键字在不同情况下的指向。
  1. 在全局作用域中,this 指向全局对象(在浏览器中是 window 对象)。
    例如:
    console.log(this); 
    
  2. 作为普通函数调用时,this 指向全局对象(非严格模式下)或 undefined (严格模式下)。
    例如:
    function myFunction() {
      console.log(this); 
    }
    myFunction();
    
  3. 作为对象的方法调用时,this 指向该对象。
    例如:
    let obj = {
      method: function() {
        console.log(this); 
      }
    };
    obj.method();
    
  4. 使用 call、apply、bind 方法调用函数时,可以显式指定 this 的指向。
    例如:
    function myFunction() {
      console.log(this); 
    }
    myFunction.call({ name: 'John' }); 
    
  5. 在构造函数中,this 指向新创建的对象实例。
    例如:
    function Person(name) {
      this.name = name;
    }
    let person = new Person('Alice');
    

记忆口诀:“全局之中指全局,普通调用看模式,对象方法指对象,显式指定靠方法,构造函数指实例”

在 HTML 中,<script> 标签有一个 defer 属性和 async 属性,它们的作用是什么?有什么区别?

在 HTML 中,<script> 标签的 defer 和 async 属性都用于控制脚本的加载和执行方式。
defer 属性的作用是:当浏览器解析到带有 defer 属性的 <script> 标签时,会继续解析页面,同时下载脚本,但脚本会在页面解析完成后、DOMContentLoaded 事件触发前执行。
async 属性的作用是:当浏览器遇到带有 async 属性的

  • defer 保证脚本按顺序执行,且在页面解析完成后执行。
  • async 不保证脚本的执行顺序,下载完成立即执行。
    记忆口诀:“defer 下载同步走,页面完后再执行,async 异步速下载,顺序不定立即跑”
如何在 CSS 中实现一个元素的水平和垂直居中?请列举多种方法。

在 CSS 中实现一个元素的水平和垂直居中,有以下多种方法:

  1. 使用 Flex 布局:
.parent {
  display: flex;
  justify-content: center;
  align-items: center;
}
  1. 使用绝对定位结合 transform:
.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
  1. 使用 Grid 布局:
.parent {
  display: grid;
  justify-items: center;
  align-items: center;
}
  1. 对于已知宽高的元素,使用绝对定位结合负边距:
.parent {
  position: relative;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -50px;  /* 元素高度的一半 */
  margin-left: -50px;  /* 元素宽度的一半 */
}

记忆口诀:“Flex 布局居中易,绝对定位加变换,Grid 布局也可行,负边距对定宽高”


http://www.kler.cn/a/565020.html

相关文章:

  • Unity学习笔记之——ugui的性能优化
  • 一键导出数据库表到Excel
  • GDidees CMS v3.9.1本地文件泄露漏洞(CVE-2023-27179)
  • [原创]openwebui解决searxng通过接口请求不成功问题
  • C++游戏开发系列教程之第二篇:面向对象编程与游戏架构设计
  • 27.贪心算法5
  • uni小程序wx.switchTab有时候跳转错误tab问题,解决办法
  • BladeX框架接口请求跨域
  • Java面试题总结 - Java集合篇(附答案)
  • 【Linux】修改 core 文件大小和路径
  • 微服务测试
  • Geo3D城市引擎大规模建筑植被渲染
  • AppInventor2 vs Android Studio
  • 基于Python socket库构建的基于 P2P 的文件共享系统示例
  • STM32 物联网智能家居 (七) 设备子系统--风扇控制
  • dockerfile基于alpine构建haproxy
  • 突破加速度计的精度与量程瓶颈:HEROS-GAN技术
  • drupal可以自动将测试环境的网页部署到生产环境吗
  • 蓝桥杯 Java B 组之最短路径算法(Dijkstra、Floyd-Warshall)
  • 【vue3+highCharts】图表及字体大小自适应