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 相关文章推荐
JS实现浏览器菜单命令
Sep 05 Javascript
JavaScript String.replace函数参数实例说明
Jun 06 Javascript
子页向父页传值示例
Nov 27 Javascript
EasyUI实现第二层弹出框的方法
Mar 01 Javascript
Node.js Addons翻译(C/C++扩展)
Jun 12 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
Nov 22 Javascript
Angular2 父子组件数据通信实例
Jun 22 Javascript
详解Vue项目在其他电脑npm run dev运行报错的解决方法
Oct 29 Javascript
用webpack4开发小程序的实现方法
Jun 04 Javascript
jQuery+PHP+Ajax实现动态数字统计展示功能
Dec 25 jQuery
vue 组件销毁并重置的实现
Jan 13 Javascript
vue使用canvas实现移动端手写签名
Sep 22 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
百度ping方法使用示例 自动ping百度
2014/01/26 PHP
Avengerls vs Newbee BO3 第三场2.18
2021/03/10 DOTA
Mootools 1.2教程 设置和获取样式表属性
2009/09/15 Javascript
修改jquery里的dialog对话框插件为框架页(iframe) 的方法
2010/09/14 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
javascript设计简单的秒表计时器
2020/09/05 Javascript
jQuery插件扩展extend的简单实现原理
2016/06/24 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
详解用Node.js实现Restful风格webservice
2017/09/29 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
js构建二叉树进行数值数组的去重与优化详解
2018/03/26 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
解决vue项目,npm run build后,报路径错的问题
2020/08/13 Javascript
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
python 信息同时输出到控制台与文件的实例讲解
2018/05/11 Python
java中的控制结构(if,循环)详解
2019/06/26 Python
Python 音频生成器的实现示例
2019/12/24 Python
使用pytorch实现可视化中间层的结果
2019/12/30 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
Python在后台自动解压各种压缩文件的实现方法
2020/11/10 Python
python爬虫中采集中遇到的问题整理
2020/11/27 Python
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
海信商城:海信电视、科龙空调、容声冰箱官方专卖
2017/02/07 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
介绍一下HDLC(High-Level Data Link Control)高层数据链路协议
2012/01/21 面试题
extern是什么意思
2016/03/10 面试题
人事专员的岗位职责
2014/03/01 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
golang 如何通过反射创建新对象
2021/04/28 Golang
选购到合适的激光打印机
2022/04/21 数码科技
Python 统计序列中元素的出现频度
2022/04/26 Python
基于docker安装zabbix的详细教程
2022/06/05 Servers