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 树控件 比较好用
Jun 11 Javascript
读jQuery之八 包装事件对象
Jun 21 Javascript
解决jquery1.9不支持browser对象的问题
Nov 13 Javascript
node.js中的forEach()是同步还是异步呢
Jan 29 Javascript
JavaScript中Function详解
Feb 27 Javascript
Javascript中的getUTCDay()方法使用详解
Jun 10 Javascript
jQuery实现鼠标经过事件的延时处理效果
Aug 20 Javascript
Bootstrap进度条与AJAX后端数据传递结合使用实例详解
Apr 23 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
JavaScript运动原理基础知识详解
Apr 02 Javascript
vue自定义指令和动态路由实现权限控制
Aug 28 Javascript
使用js获取身份证年龄的示例代码
Dec 11 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,ajax实现分页
2008/03/27 PHP
PHP 金额数字转换成英文
2010/05/06 PHP
PHP操作MongoDB时的整数问题及对策说明
2011/05/02 PHP
用php实现选择排序的解决方法
2013/05/04 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
jQuery学习笔记之jQuery.extend(),jQuery.fn.extend()分析
2014/06/09 Javascript
jQuery中prependTo()方法用法实例
2015/01/08 Javascript
jQuery添加和删除指定标签的方法
2015/12/16 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
vue 项目常用加载器及配置详解
2018/01/22 Javascript
jQuery中复合选择器简单用法示例
2018/03/31 jQuery
es6数值的扩展方法
2019/03/11 Javascript
vue 实现微信浮标效果
2019/09/01 Javascript
python爬取NUS-WIDE数据库图片
2016/10/05 Python
tensorflow实现softma识别MNIST
2018/03/12 Python
Python小进度条显示代码
2019/03/05 Python
在Python中画图(基于Jupyter notebook的魔法函数)
2019/10/28 Python
python3中pip3安装出错,找不到SSL的解决方式
2019/12/12 Python
解决Pytorch 加载训练好的模型 遇到的error问题
2020/01/10 Python
Python通过socketserver处理多个链接
2020/03/18 Python
Python Excel vlookup函数实现过程解析
2020/06/22 Python
python爬虫beautifulsoup解析html方法
2020/12/07 Python
pycharm配置python 设置pip安装源为豆瓣源
2021/02/05 Python
HTML5中通过li-canvas轻松实现单图、多图、圆角图绘制,单行文字、多行文字等
2018/11/30 HTML / CSS
西班牙香水和化妆品购物网站:Arenal Perfumerías
2019/03/01 全球购物
印度第一网上礼品店:IGP.com
2020/02/06 全球购物
关于运动会的稿件
2014/02/02 职场文书
机修工工作职责
2014/02/21 职场文书
产品质量保证书
2014/04/29 职场文书
建筑工地质量标语
2014/06/12 职场文书
工程索赔意向书
2014/08/30 职场文书
写给老婆的保证书
2015/02/27 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
结婚十年感言
2015/07/31 职场文书
Springboot配置suffix指定mvc视图的后缀方法
2021/07/03 Java/Android