Javascript 面试题随笔


Posted in Javascript onMarch 31, 2011
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还是一个很好玩的语言。

Javascript 相关文章推荐
jQuery学习基础知识小结
Nov 25 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
Nov 15 Javascript
使用jquery实现放大镜效果
Sep 02 Javascript
js点击按钮实现带遮罩层的弹出视频效果
Dec 19 Javascript
jQuery遮罩层实例讲解
May 11 jQuery
vue axios 简单封装以及思考
Oct 09 Javascript
详解微信小程序中组件通讯
Oct 30 Javascript
vue通过cookie获取用户登录信息的思路详解
Oct 30 Javascript
js作用域和作用域链及预解析
Apr 11 Javascript
JS学习笔记之闭包小案例分析
May 29 Javascript
用JavaScript实现贪吃蛇游戏
Oct 23 Javascript
JavaScript实现通讯录功能
Dec 27 Javascript
IE6 fixed的完美解决方案
Mar 31 #Javascript
HTML DOM的nodeType值介绍
Mar 31 #Javascript
setTimeout和setInterval的区别你真的了解吗?
Mar 31 #Javascript
Draggable Elements 元素拖拽功能实现代码
Mar 30 #Javascript
使用jQuery实现dropdownlist的联动效果(sharepoint 2007)
Mar 30 #Javascript
使用jquery为table动态添加行的实现代码
Mar 30 #Javascript
jquery 查找select ,并触发事件的实现代码
Mar 30 #Javascript
You might like
日本十大科幻动漫 宇宙骑士垫底,第一已成经典
2020/03/04 日漫
PHP文件上传实例详解!!!
2007/01/02 PHP
PHP实现唤起微信支付功能
2019/02/18 PHP
网页常用特效代码整理
2006/06/23 Javascript
JavaScript中的History历史对象
2008/01/16 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
原生javascript实现无间缝滚动示例
2014/01/28 Javascript
javascript正则匹配汉字、数字、字母、下划线
2014/04/10 Javascript
使用js dom和jquery分别实现简单增删改
2014/09/11 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
AngularJS基础 ng-readonly 指令简单示例
2016/08/02 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
使用OPENLAYERS3实现点选的方法
2020/09/24 Javascript
Vue2 模板template的四种写法总结
2018/02/23 Javascript
谈谈IntersectionObserver懒加载的具体使用
2019/10/15 Javascript
微信小程序getLocation 需要在app.json中声明permission字段
2020/03/03 Javascript
JS forEach跳出循环2种实现方法
2020/06/24 Javascript
jQuery实现推拉门效果
2020/10/19 jQuery
Python实现的tab文件操作类分享
2014/11/20 Python
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
Python 中迭代器与生成器实例详解
2017/03/29 Python
在python3环境下的Django中使用MySQL数据库的实例
2017/08/29 Python
python将字符串转变成dict格式的实现
2019/11/18 Python
canvas绘制视频封面的方法
2018/02/05 HTML / CSS
html5 http的轮询和Websocket原理
2018/10/19 HTML / CSS
世界首屈一指的在线男士内衣权威:HisRoom
2017/08/05 全球购物
世界上最具创新性的增强型知名运动品牌:Proviz
2018/04/03 全球购物
日本整理专家Marie Kondo的官方在线商店:KonMari
2020/06/29 全球购物
使用useBean标志初始化BEAN时如何接受初始化参数
2012/02/11 面试题
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
党员个人剖析材料
2014/09/30 职场文书
党员四风自我剖析材料
2014/10/07 职场文书
商超业务员岗位职责
2015/02/13 职场文书
民事起诉书范本
2015/05/19 职场文书