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 相关文章推荐
JavaScript 高效运行代码分析
Mar 18 Javascript
浅析JavaScript中的常用算法与函数
Nov 21 Javascript
原生javascript模仿win8等待提示圆圈进度条
Apr 24 Javascript
jquery过滤特殊字符',防sql注入的实现方法
Aug 17 Javascript
Bootstrap幻灯片轮播图支持触屏左右手势滑动的实现方法
Oct 13 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
Javascript es7中比较实用的两个方法示例
Jul 21 Javascript
构建Vue大型应用的10个最佳实践(小结)
Nov 07 Javascript
vue移动端弹起蒙层滑动禁止底部滑动操作
Jul 22 Javascript
jquery实现异步文件上传ajaxfileupload.js
Oct 23 jQuery
JavaScript组合继承详解
Nov 07 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
PHP转换IP地址到真实地址的方法详解
2013/06/09 PHP
js下通过prototype扩展实现indexOf的代码
2010/12/08 Javascript
JS高级调试技巧:捕获和分析 JavaScript Error详解
2014/03/16 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
jquery选择器简述
2015/08/31 Javascript
jQuery实现字符串全部替换的方法【推荐】
2017/03/09 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
Javascript中toFixed计算错误(依赖银行家舍入法的缺陷)解决方法
2017/08/22 Javascript
vue-router启用history模式下的开发及非根目录部署方法
2018/12/23 Javascript
JS使用JSON.parse(),JSON.stringify()实现对对象的深拷贝功能分析
2019/03/06 Javascript
详解vue-cli项目开发/生产环境代理实现跨域请求
2019/07/23 Javascript
js+springMVC 提交数组数据到后台的实例
2019/09/21 Javascript
ant design实现圈选功能
2019/12/17 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
Python getopt模块处理命令行选项实例
2014/05/13 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
python 调用c语言函数的方法
2017/09/29 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
python conda操作方法
2019/09/11 Python
Django Haystack 全文检索与关键词高亮的实现
2020/02/17 Python
用CSS3写的模仿iPhone中的返回按钮
2015/04/04 HTML / CSS
HTML5 body设置全屏背景图片的示例代码
2020/12/08 HTML / CSS
女子锻炼服装和瑜伽服装:Splits59
2019/03/04 全球购物
VICHY薇姿俄罗斯官方网上商店:法国护肤品牌,火山温泉水
2019/11/22 全球购物
澳大利亚在线划船、露营和钓鱼商店:BCF Australia
2020/03/22 全球购物
党员实事承诺书
2014/03/26 职场文书
幼儿园家长评语大全
2014/04/16 职场文书
幼师求职自荐信
2014/05/31 职场文书
学校食堂食品安全责任书
2014/07/28 职场文书
中学生运动会通讯稿大全
2014/09/18 职场文书
2015国庆节66周年演讲稿
2015/03/20 职场文书
护士自我推荐信范文
2015/03/24 职场文书
《将心比心》教学反思
2016/02/23 职场文书
MySQL 重写查询语句的三种策略
2021/05/10 MySQL
Python实现PIL图像处理库绘制国际象棋棋盘
2021/07/16 Python