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

笔试题-_-

1. 下面代码输出什么

functionSetCount(count){this.count=count}SetCount.prototype.printCount=function(){console.log(this.count)}leta=newSetCount(100)a.count=200a.__proto__.count=300a.__proto__.printCount()a.printCount()

解析:

让我们逐步分析这段代码: 首先,定义了一个构造函数 SetCount,它接受一个参数 count 并将其赋值给 this.count。 然后,在 SetCount 的原型上添加了一个 printCount 方法,这个方法会打印 this.count。 创建了一个 SetCount 的实例 a,初始 count 值为 100。 将 a.count 设置为 200。这会在 a 对象上直接创建一个 count 属性。 将 a.__proto__.count 设置为 300。这实际上是在 SetCount.prototype 上设置了 count 属性。 调用 a.__proto__.printCount()。这里直接在原型上调用 printCount 方法。在这种情况下,this 指向 a.__proto__,即 SetCount.prototype。因此,它会打印原型上的 count 值,也就是 300。 调用 a.printCount()。这里是通过实例 a 调用 printCount 方法。在这种情况下,this 指向实例 a。因为 a 自身有 count 属性(值为 200),所以会打印 200。 重要的是要理解 JavaScript 的原型链和 this 的绑定机制: 当通过对象调用方法时,this 通常指向该对象。 属性查找首先在对象自身进行,如果没找到,则沿着原型链向上查找。 直接在 __proto__ 上调用方法会改变 this 的指向。

2. 请实现一个方法,可求出数组的的最大值和最小值

请实现一个方法,可求出数组的的最大值和最小值,例如:[2,3] -> 3, [4,3] -> 4

functiongetMaxOrMin(arr,type=1){// type: 1为求最大值,0或其他不为1的数字为求最小值if(type==1){constres=arr.sort((a,b)=>{returnb-a})returnres[0]}else{constres=arr.sort((a,b)=>{returna-b})returnres[0]}}

3. 请实现一个或多个方法,能将字符串中重复的部分去重

请实现一个或多个方法,能将字符串中重复的部分去重,例如:‘hello’ -> ‘helo’

functiondeduplication_one(data){if(typeofdata!=='string')returnletarr=data.split('')letset=newSet(arr)return[...set].join('')}functiondeduplication_two(data){if(typeofdata!=='string')returnletarr=data.split('')letobj={}letresult=''for(leti=0;i<arr.length;i++){letchar=arr[i]if(!obj[char]){// 判断该字符是否已经存在obj[char]=trueresult+=char}}returnresult}

4. 请用不少于2种继承方式实现,Child继承Parent

5. 请回答以下console输出结果

varname='Tom';(function(){if(typeofname=='undefined'){varname='Jack'console.log('Goodbye ',name)}else{console.log('Hello ',name)}})()// Goodbye Jack// 立即执行函数可以创建一个作用域,保护私有变量不会污染全局变量,内部无法直接访问外部变量。vara=10;(function(a){console.log(a);a=5;console.log(window.a)vara=20;console.log(a)})()// undefined// 10// 20// var定义的变量可以挂载到window下functionchangeObjProperty(o){o.siteUrl='https://www.example.com'o=newObject();o.siteUrl='http://example.com'}letwebSite=newObject();changeObjProperty(webSite)console.log(webSite.siteUrl);// https://www.example.com// 在函数中,首先修改了对象 o 的 siteUrl 属性为 "https://www.example.com",// 然后又新建了一个对象 o 并修改了其 siteUrl 属性为 "http://example.com",但这个新建的对象 o 只在函数内部有效,// 不会影响到外部的 webSite 对象。// 因此,最终输出的是在函数内部修改过的 webSite 对象的 siteUrl 属性,即 "https://www.example.com"。

6. 完成下列不等式

classA{}classBextendsA{}consta=newA()constb=newB()a.__proto__===b.__proto__===B.__proto__===B.prototype.__proto__===b.__proto__.__proto__===// 解答console.log(a.__proto__===A.prototype);console.log(b.__proto__===B.prototype);console.log(B.__proto__===A);console.log(B.prototype.__proto__===A.prototype);console.log(b.__proto__.__proto__===A.prototype);

7.请写出以下代码运行的结果

functionPerson(){}varperson1=newPerson()varperson2=newPerson()Person.prototype.getName=function(){returnthis.name}Person.prototype.name='tom'person1.name='jerry'varname=person2.getName()console.log(name)// tom// 因为在Person的原型对象上定义了getName方法和name属性,// 并将name属性的值设置为"tom"。在实例化person2时,// 没有为其单独设置name属性,因此调用getName方法时返回的是原型对象上的name属性值"tom"。// 而在实例化person1时,单独为其设置了name属性值为"jerry",// 但是调用getName方法时,this指向的是person1实例,因此返回的是person1的name属性值"jerry"。setTimeout(()=>{console.log(1)},0)newPromise(functionexeculor(resolve){console.log(2)for(vari=0;i<10000;i+=1){i==9999&&resolve()}console.log(3)}).then(function(){console.log(4)})console.log(5)// 2 3 5 4 1asyncfunctionasync1(){console.log('async1 start')awaitasync2()console.log('async1 end')}asyncfunctionasync2(){console.log('async2')}console.log('script start')setTimeout(()=>{console.log('setTimeout')},0)async1()newPromise(function(resolve){console.log('promise1')resolve()}).then(function(){console.log('promise2')})console.log('script end')// script start, async1 start, async2, promise1, script end, async1 end, promise2, setTimeout
http://www.jsqmd.com/news/472664/

相关文章:

  • Simpleperf 性能工具介绍app_profiler.py -i perf.data
  • C#毕业设计——基于C#+asp.net+SQL server的通用作业批改系统设计与实现(毕业论文+程序源码)——作业批改系统
  • 2026年江苏名酒回收机构推荐榜:名酒 / 老酒 / 虫草回收、上门服务、商家选择指南,盛鑫回收用专业鉴定守护靠谱交易 - 海棠依旧大
  • anaconda常用指令
  • “水莲花数”
  • 2026年成都/自贡/内江/泸州/宜宾/乐山/四川/云南云梯车、高空车、吊车、挖掘机、压路机、铲车租赁市场盘点:如何甄选可靠服务伙伴? - 2026年企业推荐榜
  • Ubuntu 22.04 搭建onlyoffice私服
  • 欧洲智慧零售及无人店铺展代理:好评度高选择策略解析
  • Logstash 项目教程:从零开始构建数据管道
  • ubantu环境初始化
  • 零基础Java第二期:数据类型与变量
  • 2026年3月江苏名酒回收公司选择指南:茅台回收、名酒老酒回收、洋酒红酒回收、虫草回收机构 - 海棠依旧大
  • 英国伯明翰电子烟展门票办理:靠谱合作公司选择的5大核心策略
  • 2026年3月杭州租车公司选择指南:商务、婚车、大巴、考斯特、豪车、旅游包车租车公司推荐 - 海棠依旧大
  • STM32开发入门(一):在 Keil 上新建 Project 工程
  • 数据的存储(原反补码/大小端存储/截断溢出/隐式类型转换/浮点数存储)
  • 老三网址读取
  • 前端反接保护:实用方案解析与探讨
  • 2026年杭州租车服务指南:商务出行、旅游包车、婚车车队及汽车租赁公司选择建议,卓强汽车用十年沉淀护航每一次安心旅程 - 海棠依旧大
  • 【Java实战】Java集成AD域账号登录
  • ES 处理索引数据变动的原理剖析
  • 【OS】进程等待-就绪态分析及原语-事务对比
  • 减速电机 手指气缸 直线导轨规格尺寸图
  • 基于QT对UR3进行开发
  • 河北省雄安新区(马蹄湾村)航空高光谱遥感应用数据集下载
  • 【人工智能】少样本学习/提示(Few-shot Learning/Prompting),这种能力模仿了人类的学习方式,即我们通常不需要大量的例子来学习新事物或识别新的物体
  • 大卫三角形法(canvas)和立体图示法(echarts)实现
  • Kafka 高吞吐量的原因是什么?
  • CCV 开源项目使用教程
  • Kafka 如何调优?