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 相关文章推荐
Firefox和IE浏览器兼容JS脚本写法小结
Jul 07 Javascript
Jquery拖拽并简单保存的实现代码
Nov 28 Javascript
JavaScript高级程序设计(第3版)学习笔记2 js基础语法
Oct 11 Javascript
js如何打印object对象
Oct 16 Javascript
使用bootstrap validator的remote验证代码经验分享(推荐)
Sep 21 Javascript
KnockoutJS 3.X API 第四章之click绑定
Oct 10 Javascript
浅谈angularjs $http提交数据探索
Jan 20 Javascript
JS实现网页抢购功能(触发,终止脚本)
Nov 27 Javascript
详解vue表单——小白速看
Apr 08 Javascript
详解JQuery基础动画操作
Apr 12 jQuery
vue跳转页面的几种方法(推荐)
Mar 26 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
DC《神奇女侠2》因疫情推迟上映 温子仁新恐怖片《恶性》撤档
2020/04/09 欧美动漫
php的curl实现get和post的代码
2008/08/23 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP后门隐藏的一些技巧总结
2020/11/04 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
javascript实现图片跟随鼠标移动效果的方法
2015/05/13 Javascript
JavaScript从数组的indexOf()深入之Object的Property机制
2016/05/11 Javascript
详解JavaScript节流函数中的Throttle
2016/07/16 Javascript
React根据宽度自适应高度的示例代码
2017/10/11 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
vue中多路由表头吸顶实现的几种布局方式
2019/04/12 Javascript
利用Vue实现一个markdown编辑器实例代码
2019/05/19 Javascript
如何在微信小程序中存setStorage
2019/12/13 Javascript
python开发中module模块用法实例分析
2015/11/12 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
微信跳一跳辅助python代码实现
2018/01/05 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
opencv python 2D直方图的示例代码
2018/07/20 Python
python爬虫租房信息在地图上显示的方法
2019/05/13 Python
python基于paramiko将文件上传到服务器代码实现
2019/07/08 Python
Python3.x+pyqtgraph实现数据可视化教程
2020/03/14 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
在Ajax应用中信息是如何在浏览器和服务器之间传递的
2016/05/31 面试题
商务英语大学生职业生涯规划书范文
2014/01/01 职场文书
入党转预备思想汇报
2014/01/07 职场文书
仓管岗位职责范本
2014/02/08 职场文书
材料工程专业毕业生求职信
2014/03/04 职场文书
优秀应届本科生求职信
2014/07/19 职场文书
国企干部对照检查材料
2014/08/22 职场文书
升国旗演讲稿
2014/09/05 职场文书
2016春季运动会前导词
2015/11/25 职场文书
使用canvas仿Echarts实现金字塔图的实例代码
2021/11/11 HTML / CSS