专项练习29

news2024/12/23 12:23:42

目录

一、选择题

    1、如果修改obj里面的name属性时会发生什么?

    2、以下代码执行后,a.x 和 b.x 的结果分别为()

    3、在ECMAScript6 中,Promise的状态有()

    4、下面哪些方式在同一个窗口下能够检测一个js对象是数组类型?(      )


一、选择题

1、如果修改obj里面的name属性时会发生什么?
let obj = {name: '222'};
let _name = obj.name;
Object.defineProperty(obj, 'name', {
  get() {
    return _name;
  },
  set(newVal) {
    console.log(newVal, _name);
    _name = newVal;
  }
})
obj.name = '11';

A、打印11

B、打印222

C、打印11和222

D、什么都不打印

解析:

(1)这里通过对象的原生方法去监听 obj 的 name 属性,主要是为了到达修改 name 属性时,同时打印出新值和旧值

(2)object.defineProprty() 的三个参数

①被操作的对象

②该对象要被操作的属性和方法,在访问这个属性时,会调用 get(),比如 console.log(); 而在修改这个属性的时候,会调用 set(),在最后一行修改了obj.name 这个属性,会调用set(),先打印 set()接收的值 newVal,然后打印以前的值,最后将 newVal 的值赋给 _name;

③一个回调函数

(3)代码注释

<script>
    let obj = { name: '222' };
    let _name = obj.name;//相当于_name='222' 
    Object.defineProperty(obj, 'name', {
        get() {
            return _name;
        },
        set(newVal) {
            console.log(newVal, _name);
            _name = newVal;
        }//重新定义name属性 
    })
    obj.name = '11';//调用了name的set方法 所以先输出'11'再输出'222'
</script>

2、以下代码执行后,a.x 和 b.x 的结果分别为()
function A(x){
  this.x = x;
}
A.prototype.x = 1;
 
function B(x){
  this.x = x;
}
B.prototype = new A();
var a = new A(2), b = new B(3);
delete b.x;

A、2, 3

B、2, 1

C、2, undefined

D、其他几项都不对

正确答案:C

解析:

知识点:prototype、new operator

(1)对象a :自身具有属性 x,属性值为2,同时其原型对象上也有属性 x,属性值为1

(2)对象 b :在初始化时也是自身具有属性 x,属性值为3,同时其原型对象函数A 的实例,同样具有属性 x,由于没有传参,其属性 x 的值为undefined

①当 delete b.x 时,对象 b 自身的 x 属性被删除,但是其原型对象上的x属性不会被删除

②根据对象属性查找的作用域链规则,访问对象属性时,会查找对象自身的属性,如果不存在会继续在其原型对象上进行查找,故a.x的返回结果为2,b.x的返回结果为undefined

(3)代码分析

<script>
    function A(x) {
        this.x = x;
    }
    A.prototype.x = 1;//将A的prototype.x赋值为1
    //prototype:是JS中的原型链机制,当读取A中的x时,如果A中找不到,则通过原型链去查找x
    //去new一个对象时会继承这个原型链

    function B(x) {
        this.x = x;
    }
    B.prototype = new A();
    //将B的原型链指向A
    //B.prototype = { x: undefined }

    var a = new A(2), b = new B(3);
    // a.x可以直接取到结果
    //b = { x: 3}
    //b.__proto__ = { x: undefined }

    delete b.x;
    // b.x原本为3后来被删除,则进入原型链查找,结果为undefined
    //b = { }
    //.b__proto__ = { x: undefined}
    console.log(a.x);
    console.log(b.x);
</script>

①new运算符:new operator - JavaScript | MDN

②继承与原型链:Inheritance and the prototype chain - JavaScript | MDN

③delete运算符:delete operator - JavaScript | MDN


3、在ECMAScript6 中,Promise的状态有()

A、Pending

B、Pause

C、Resolved

D、Rejected

正确答案:ACD        你的答案:CD

解析:

(1)Promise

①三个状态 pending fulfilled rejected

②两个过程 pending->fulfilled(resolve) pending->rejected(reject)

③一个方法 then

(2)参考文档

ES6 入门教程


4、下面哪些方式在同一个窗口下能够检测一个js对象是数组类型?(      )

A、Array.isArray()

B、instanceof

C、typeof

D、Object.prototype.toString.call()

正确答案:ABD        你的答案:C

解析:

(1)选项

①A选项:Array 为 js 的原生对象,它有一个静态方法:Array.isArray(),能判断参数是否为数组

②B选项:instanceof 运算符返回一个布尔值,表示对象是否为某个构造函数的实例

③C选项: typeof 判断 object、array、null 的变量都返回 object

④D选项:Object.prototype.toString() 为 Object 对象的实例方法,默认情况下(即不重写该方法),返回参数的类型字符串

(2)代码输出

<script>
    let arr = [1,2,3]
    console.log(Array.isArray(arr));//true
    console.log(arr instanceof Array);//true
    console.log(typeof arr);//object
    console.log(Object.prototype.toString.call(arr).slice(8,-1));//Array
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/761258.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决:eclipse无法查看源代码

eclipse的jdk没有配置对应的src&#xff0c;需要手动去添加jdk的源代码附件。 步骤如下&#xff1a; 1、找到以下路径&#xff1a;windows(窗口)–>Preferences(首选项)–>Java–>Installed JRES(已安装的JRE)&#xff0c;出现如下图所示的图片后&#xff0c;选中点…

15 - 信号处理设计模式

---- 整理自狄泰软件唐佐林老师课程 查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;Linux系统编程训练营 - 目录 文章目录 1. Linux应用程序安全性讨论1.1 问题1.2 不同场景1.2.1 场景一&#xff1a;不需要处理信号1.2.2 场景二&#xff1a;需要处理信号 2. 场景…

SQLmap使用指南(包含使用SQLmap获取shell)

文章标题 一&#xff1a;SQLmap基础知识二&#xff1a;SQLmap各大模块中的常用命令&#xff08;一&#xff09; 基础命令&#xff08;二&#xff09; target模块&#xff08;三&#xff09; Emuneration模块&#xff08;四&#xff09;其他命令 三&#xff1a;SQLmap应用示例&a…

数据结构_进阶(2):二叉树的OJ练习题

目录 1. 二叉树创建字符串。OJ链接 2. 二叉树的分层遍历1。OJ链接 3. 二叉树的分层遍历2。OJ链接 4. 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先 。OJ链接 5. 二叉树搜索树转换成排序双向链表。OJ链接 6. 根据一棵树的前序遍历与中序遍历构造二叉树。 OJ链接…

2023年NOC决赛-加码未来编程赛项决赛模拟题-Python模拟题--卷4

第一题、计算 1+2+3+⋯+(n−1)+n 的值,其中正整数 n 不大于 100。由于你没有高斯聪明,所以你不被允许使用等差数列求和公式直接求出答案。 输入格式 输入一个正整数 n。 输出格式 输出一个正整数,表示最后求和的答案。 输入输出样例 输入 #1 100 输出 #1 5050 第二…

手撕自定义类型:结构体,枚举,联合——【C语言】

在开始学习之前我们先来欣赏一下五岳之一华山的风景&#xff0c;来营造一个好心情&#xff0c;只有一个好心情我们才能更好的学习 目录 结构体 1 结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 特殊的声明 1.4 结构的自引用 1.5 结构体变量的定义和初始化 1.6 …

Go语言之重要数组类型切片(slice)make,append函数

切片是一个动态数组&#xff0c;因为数组的长度是固定的&#xff0c;所以操作起来很不方便&#xff0c;比如一个names数组&#xff0c;我想增加一个学生姓名都没有办法&#xff0c;十分不灵活。所以在开发中数组并不常用&#xff0c;切片类型才是大量使用的。 切片基本操作 切片…

Linux系统文件编程及文件读、写操作

Linux 系统编程Day01 文章目录 Linux 系统编程Day011.文件编程概述1.1 文件的打开及创建1.1.1 参数说明1.1.2 文件写入操作示例1.1.3 文件的权限 2.文件操作2.1 写入文件2.2 文件读取操作2.3 文件的光标移动操作 3.文件操作原理简述3.1文件描述符3.2 Linux文件操作流程 1.文件编…

【数据结构】二叉树的前中后序遍历(C语言)

文章目录 什么是二叉树树相关的概念树的表示形式特殊的二叉树如何创造出一棵二叉树二叉树的遍历先序遍历(前序遍历)中序遍历后序遍历 总结 什么是二叉树 [二叉树] 顾名思义就是有两个分支节点的树&#xff0c;不仅如此&#xff0c;除了叶子外的所有节点都具有两个分支节点&…

单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真

单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真 下面介绍单个电源模块给多个负载使用,并且电源后还经过了磁珠-二级电源直流压降仿真,常见于二级压降仿真,以下图为例

备战秋招 | 笔试强训5

目录 一、选择题 二、编程题 三、选择题题解 四、编程题题解 一、选择题 1、在上下文和头文件均正常情况下&#xff0c;以下程序的输出结果是&#xff08;&#xff09; int x 1; do {printf("%2d\n",x); }while(x--); A. 1 B. 无任何输出 C. 2 D. 陷入死循环 …

三种智能算法优化PID参数软件,MATLABAPP开发

今天的主题是&#xff1a;三种智能算法优化常见传递函数的PID参数&#xff0c;采用MATLAB APP Designer 开发。提供代码源程序&#xff0c;可以自行修改源代码&#xff08;不是封装软件&#xff09; 这个软件基本涵盖了所有的传递函数类型&#xff0c;传递函数的参数简单易改。…

【Java反射机制详解】—— 每天一点小知识

&#x1f4a7; J a v a 反射机制详解 \color{#FF1493}{Java反射机制详解} Java反射机制详解&#x1f4a7; &#x1f337; 仰望天空&#xff0c;妳我亦是行人.✨ &#x1f984; 个人主页——微风撞见云的博客&#x1f390; &#x1f433; 《数据结构与算法》专栏的文章…

pytest 参数化进阶

目录 前言&#xff1a; 语法 参数化误区 实践 简要回顾 前言&#xff1a; pytest是一个功能强大的Python测试框架&#xff0c;它提供了参数化功能&#xff0c;可以帮助简化测试用例的编写和管理。 语法 本文就赶紧聊一聊 pytest 的参数化是怎么玩的。 pytest.mark.par…

week27

这周是磨难的一周不知道NT装了多少次系统&#xff0c;删除了多少数据好消息是把BIOS和ubuntu安装地很熟练了&#xff0c;而且经过爱上了心仪的Ubuntu23.04&#xff0c;就是她了坏消息是一个学期做的笔记全都没了&#xff0c;以后不好回忆了&#xff0c;好消息是不用考试了&…

总结929

今日做了一篇阅读题&#xff0c;差点全军覆没&#xff0c;通过这篇阅读&#xff0c;主要说明了两大问题&#xff0c;一个是单词&#xff0c;背的还不够牢固&#xff0c;其二&#xff0c;语法功底还不够扎实。但说实话&#xff0c;在语法方面&#xff0c;还是下了一番功夫&#…

linux 内网批量快速传输大文件 nc

使用nc工具 传输内网宽带拉满先运行接收端 开始监听使用 ansible 拷贝脚本到其它接收端服务器批量运行接收端脚本查看nc是否运行运行发送端运行发送端脚本开始传输文件 传输内网宽带拉满 先运行接收端 开始监听 接收端脚本 re.sh #!/bin/bash #Revision: 1.0 #Author:…

动态规划(一) —— 从背包系列问题看DP

前言 动态规划可以算是算法初学者的噩梦哈哈&#xff0c;这段时间荔枝在持续学习Java后端的同时也没有忘记刷题嘿嘿嘿&#xff0c;总算把代码随想录上给出的有关动态规划的题目刷完了。接下来的几篇文章荔枝将会对于刷过的动态规划问题做出总结并给出相应的个人体会和理解。在本…

compose之沉浸式(侵入式)状态栏(隐藏状态栏)

沉浸式(侵入式)状态栏 效果图&#xff1a; 1、代码加入&#xff1a;WindowCompat.setDecorFitsSystemWindows(window, false) ComposeTestTheme {WindowCompat.setDecorFitsSystemWindows(window, false)Greeting("Android")} 2、沉浸式(侵入式)主题&#xff1a; …

消息推送(websocket)集群化解决方案

目录 需求分析解决方案实现步骤架构图配置websocket请求地址配置websocket连接前置和连接关闭监听配置websocket处理程序配置redis交换机配置redis订阅监听配置redis发布监听需求分析 及时信息传递:消息推送功能能够确保网站向用户发送及时的重要信息,包括新闻更新、促销活动…