我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Javascript 面试题随笔

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Javascript 面试题随笔

复制代码 代码如下:

var Fundamental = {count:1};
function Test(){}
Test.prototype = Fundamental;
Test.prototype.increase = function(){this.count++;};
var test = new Test();
console.log(test.count);
var test2 = new Test();
console.log(test2.count);
test.increase();
//test.count和test2.count的值各是多少

前天去面试遇到的一道题,面试的问题大概是当test.increase被调用时,test和test2的count值分别是多少
首先,回答这道题有可能把这种情况与另一种类似的情况相混淆:
假如把代码改成:
复制代码 代码如下:

function FundamentalModified(){
var count = 1;
this.increase = function(){
count++;
}
this.show = function(){
return count;
}
}
function TestModified(){}
TestModified.prototype = new FundamentalModified();
var test3 = new TestModified();
var test4 = new TestModified();
test3.increase();
//test3.show()和test4.show()各是多少

假如问题改成这样,那就简单的多了。但是两个问题并不会得到相同的结果。
==========================================分割一下
回到面试题中,其实面试题的答案是2和1。原因呢:test.count是test的属性,而且test2.count其实是test2.__proto__的属性:

当test.increase()被调用时,JS执行了this.count++ ==> 返回this.count; this.count = this.count + 1;

this.count = this.count + 1;

这句在看似简单的语句其实有着不同寻常的意味~~

这句话的意思其实是,给实例新建一个属性,这个属性被赋予this.count + 1的值。

this.count 其实是在原型链中的count,也就是这个this.count++其实在第一次执行的时候表现为:

this.count = Test.Prototype.count + 1;

可以用hasOwnProperty来验证一下:

当var test = new Test()时。test.hasOwnProperty("count")  === false
test.increase()后。 test.hasOwnProperty("count")  === true
总的来说,JS还是一个很好玩的语言。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Javascript 面试题随笔

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Javascript 面试题随笔

前天去面试遇到的一道题,面试的问题大概是当test.increase被调用时,test和test2的count值分别是多少
2022-11-21

Java面试笔试题大全

JAVA相关基础知识1、面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节。抽象包括两个方面,一是
2023-06-03

MySQL面试笔试题集-BAT

01、MySQL技术特点?02、MySQL默认端口号?        330603、MySQL优势?04、MySQL支持的储存引擎以及特点?        MySQL5.7支持:InnoDB、MyISAM、MERGE、MEMORY、ARCHIVE、CSV、PE
MySQL面试笔试题集-BAT
2018-09-18

Java常见面试题:java面试笔记

1、基本数据类型有哪些?基本数据类型包括byte、int、char、long、float、double、boolean和short。 java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节
2023-06-02

Redis 基本认识(笔试、面试题)

一、Redis1、简介【官方简介地址:】 https://redis.io/topics/introduction  看不懂不要紧,先混个眼熟,慢慢来...。【初步认识 Redis:】 Redis is an open source (BSD li
Redis 基本认识(笔试、面试题)
2018-04-18

11道JavaScript 面试题

我从事 JavaScript 面试已经有一段时间了,我遇到过很多人,尽管知道自己要参加 JavaScript 面试,但他们要么不熟悉 JavaScript,要么没有做好充分的准备。
JavaScrip开发2024-11-29

腾讯 C++ 笔试/面试题及答案

C++与C语言的本质差别:在于C++是面向对象的,而C语言是面向过程的。或者说C++是在C语言的基础上增加了面向对象程序设.
C++语言面试2024-12-02

嵌入式笔试面试题目系列(五)

本系列将按照类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。

嵌入式笔试面试题目系列(三)

本系列将按照类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。

Spring,hibernate,struts的面试笔试题有哪些

这篇文章主要讲解了“Spring,hibernate,struts的面试笔试题有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring,hibernate,struts的面试笔试题有
2023-06-03

嵌入式笔试面试题目系列(二)

本系列将按类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。

嵌入式笔试面试题目系列(一)

本系列将按类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。本文均为嵌入式笔试面试高频题目

嵌入式笔试面试题目系列(四)

本系列将按照类别对题目进行分类整理,重要的地方标上星星,这样有利于大家打下坚实的基础。

web前端工程师面试题10条必会笔试题

布局 左边20% 中间自适应 右边200px 不能用定位答案:圣杯布局/双飞翼布局或者flex什么叫优雅降级和渐进增强?渐进增强 progressive enhancement:针对低版本浏览器进行构建页面,保证最基本的功能,然后再针对高级
2023-06-05

编程热搜

目录