首页 > 其他分享 >前端面试题:原型 / 构造函数 / 实例

前端面试题:原型 / 构造函数 / 实例

时间:2023-10-25 20:16:14浏览次数:28  
标签:__ 面试题 对象 实例 原型 构造函数 属性

1、原型 / 构造函数 / 实例

  • 原型(prototype):  一个简单的对象,用于实现对象的继承
  • 构造函数: 可通过new 来新建一个对象的函数
  • 实例: 通过构造函数和new 创建出的对象

   实例通过 __proto__ 指向原型

     通过 constructor 指向构造函数

      缺个图?

   实例上并不是真正有constructor这个指针,其实是从原型链上获取的

 

2、原型链

  原型链:由原型对象组成

    每个对象都有 __proto__ 属性,指向创建该对象的构造函数的原型

    __proto__ 将对象连接起来组成了原型链,是一个实现继承和共享属性的有限对象链

    属性查找机制:

    查找属性时,如在实例上找不到,则从原型链一层一层查找,直到找到输出;

    若找到最顶级的原型对象Object.prototype还未找到,则输出undefined

    属性修改机制:

    只会修改实例本身属性,若不存在,则进行添加属性

    如需修改原型的属性时,则可用:

      b.__proto__.x = 'YYY';

      b.x === 'YYY'  => true

    但这样会造成所有继承于该对象的实例的属性发生改变

 

3、作用域

    上下文中声明的变量 和 声明的作用范围;可分为块级作用域 和 函数作用域;

    声明提前:一个声明在函数体内都是可见的(函数优先于变量)

    非匿名自执行函数,函数变量为只读状态,无法修改

 

4、作用域链

   执行上下文中访问到父级甚至全局的变量,便是因为作用域链

    两部分:

      属性:指向父级变量对象和作用域

      AO:    自身活动对象

      如此属性包含属性,便自上而下形成一条作用域链

 

5、new运算符的执行过程

    1、新生成一个对象

    2、链接到原型

      object.__proto__ = constructor.prototype

    3、绑定this: apply,  属性和方法被添加到实例中

    4、返回新对象;如果构造函数有自己return时,则返回该值

 

    eg:

      const obj = new Object();

      obj.__proto__ = Person.prototype;

      let result = Person.call(obj);

      if (typeOf(result) === 'object') {

        Person1 = result

      } else {

        Person1 = obj

      }

      

      I:  创建一个对象,this引用该对象,同时继承该对象原型

      II:  属性和方法被加入到this所引用的对象中

      III: 新创建的对象由this所引用,并且隐式返回this  

      

 

标签:__,面试题,对象,实例,原型,构造函数,属性
From: https://www.cnblogs.com/lijinxiao/p/17788003.html

相关文章

  • 前端面试题:数组、字符串方法
    数组1、push:末尾添加元素,改变原数组2、pop:删除并返回最后一个元素,改变原数组3、unshift:  开头添加一个元素,改变原数组4、shift:删除第一项,改变原数组5、concat:合并数组并生成一个新数组,不改变原数组6、join:  把......
  • MySQL 有哪些常见的面试题
    MySQL是一种常用的关系型数据库管理系统,在面试过程中经常会涉及与MySQL相关的问题。以下是一些常见的MySQL面试题:1.介绍一下MySQL和其他数据库管理系统的区别。  -MySQL是开源的,其他商业数据库管理系统(如Oracle、MicrosoftSQLServer)需要购买许可证。  -My......
  • C# 面试题归纳
    本文章只是自己面试遇到的问题,C#基础知识。如达不到个人的需要请留言您的问题。大家共同交流。收藏,以备面试时,快速梳理一下,大脑。 一、基础知识1.值类型与引用类型值类型:int、float、char、bool、decimal、struct、enum引用类型:string、class、object、array、interface、......
  • 华为云耀云服务器L实例:初级篇-conda与python环境配置
     华为云耀云服务器L实例是一款可快速部署且易于运维的轻量级云服务器,专为中小企业和入门级开发者打造。它不仅拥有华为云擎天架构的强大性能,还具有多项用户体验优化方案,让用户轻松上手,享受简单上云的乐趣。本产品网址为:https://www.huaweicloud.com/product/hecs-light.html......
  • 【记录10】华为云耀云服务器L实例-使用Docker拉取nginx镜像的部署示例
     Docker 是一个开源平台,用于开发、运输和运行应用程序。它使用容器化技术来包装应用程序及其依赖项,以便在任何环境中都能一致地运行。简单来说,Docker 可以将应用程序及其所有依赖项打包成一个容器,这样就可以确保它无论在哪里运行都表现一致。 ### Docker 的主要组件:1.......
  • 华为云耀云服务器L实例:初级篇-mysql安装与配置
     华为云耀云服务器L实例是一款可快速部署且易于运维的轻量级云服务器,专为中小企业和入门级开发者打造。它不仅拥有华为云擎天架构的强大性能,还具有多项用户体验优化方案,让用户轻松上手,享受简单上云的乐趣。本产品网址为:https://www.huaweicloud.com/product/hecs-light.html......
  • 华为云耀云服务器L实例:初级篇-tomcat配置部署
     华为云耀云服务器L实例是一款可快速部署且易于运维的轻量级云服务器,专为中小企业和入门级开发者打造。它不仅拥有华为云擎天架构的强大性能,还具有多项用户体验优化方案,让用户轻松上手,享受简单上云的乐趣。本产品网址为:https://www.huaweicloud.com/product/hecs-light.html......
  • 华为云耀云服务器L实例:初级篇-购买并使用宝塔面板管理自己的云服务器
     在当今数字化时代,云服务器已经成为许多企业和个人不可或缺的一部分。通过将数据和应用程序存储在云端,云服务器为用户提供了灵活、可靠和高效的计算资源。为了帮助用户解决使用云服务器时的问题和困惑,华为云推出了一款专为中小企业和开发者打造的轻量级云服务器产品——云耀云......
  • 华为云耀云服务器L实例:高级篇-部署自己的免费gpt
     华为云耀云服务器L实例是一款可快速部署且易于运维的轻量级云服务器,专为中小企业和入门级开发者打造。它不仅拥有华为云擎天架构的强大性能,还具有多项用户体验优化方案,让用户轻松上手,享受简单上云的乐趣。本产品网址为:https://www.huaweicloud.com/product/hecs-light.html......
  • 华为云耀云服务器L实例:初级篇-java环境配置
     华为云耀云服务器L实例是一款可快速部署且易于运维的轻量级云服务器,专为中小企业和入门级开发者打造。它不仅拥有华为云擎天架构的强大性能,还具有多项用户体验优化方案,让用户轻松上手,享受简单上云的乐趣。本产品网址为:https://www.huaweicloud.com/product/hecs-light.html......