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 相关文章推荐
判断多个input type=file是否有已经选择好文件的代码
May 23 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
JavaScript将数据转换成整数的方法
Jan 04 Javascript
使用JavaScript获取地址栏参数的方法
Dec 19 Javascript
谈谈JavaScript自定义回调函数
Oct 18 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
详解网站中图片日常使用以及优化手法
Jan 09 Javascript
Node.js和Express简单入门介绍
Mar 24 Javascript
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
vue设置动态请求地址的例子
Nov 01 Javascript
在webstorm中配置less的方法详解
Sep 25 Javascript
vue项目实现分页效果
Mar 24 Vue.js
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
一个很不错的PHP翻页类
2009/06/01 PHP
处理单名多值表单的详解
2013/06/08 PHP
PHP7.1新功能之Nullable Type用法分析
2016/09/26 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
PHP实现数组转JSon和JSon转数组的方法示例
2018/06/14 PHP
PHP使用观察者模式处理异常信息的方法详解
2019/09/24 PHP
json数据的列循环示例
2013/09/06 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
$(document).ready(function() {})不执行初始化脚本
2014/06/19 Javascript
jQuery超精致图片轮播幻灯片特效代码分享
2015/09/10 Javascript
JavaScript SweetAlert插件实现超酷消息警告框
2016/01/28 Javascript
JavaScript实现的XML与JSON互转功能详解
2017/02/16 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
javascript实现自由编辑图片代码详解
2019/06/21 Javascript
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python操作日期和时间的方法
2014/03/11 Python
Python使用PyCrypto实现AES加密功能示例
2017/05/22 Python
Python 操作文件的基本方法总结
2017/08/10 Python
浅谈Python由__dict__和dir()引发的一些思考
2017/10/30 Python
详谈python中冒号与逗号的区别
2018/04/18 Python
python2.7实现爬虫网页数据
2018/05/25 Python
Python查看微信撤回消息代码
2018/06/07 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
浅析Django中关于session的使用
2019/12/30 Python
matplotlib 范围选区(SpanSelector)的使用
2021/02/24 Python
法国在线药房:1001Pharmacies
2021/03/07 全球购物
求职信标题怎么写
2014/05/26 职场文书
乒乓球兴趣小组活动总结
2014/07/08 职场文书
民主生活会对照检查材料思想汇报
2014/09/27 职场文书
小学教育见习报告
2014/10/31 职场文书
自愿离婚协议书范本
2015/01/26 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
python中sys模块的介绍与实例
2021/04/17 Python
Golang Gob编码(gob包的使用详解)
2021/05/07 Golang