Javascript面试题随笔
2023-06-13 09:14:27 时间
varFundamental={count:1};
functionTest(){}
Test.prototype=Fundamental;
Test.prototype.increase=function(){this.count++;};
vartest=newTest();
console.log(test.count);
vartest2=newTest();
console.log(test2.count);
test.increase();
//test.count和test2.count的值各是多少
前天去面试遇到的一道题,面试的问题大概是当test.increase被调用时,test和test2的count值分别是多少
首先,回答这道题有可能把这种情况与另一种类似的情况相混淆:
假如把代码改成:
functionFundamentalModified(){
varcount=1;
this.increase=function(){
count++;
}
this.show=function(){
returncount;
}
}
functionTestModified(){}
TestModified.prototype=newFundamentalModified();
vartest3=newTestModified();
vartest4=newTestModified();
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=Test.Prototype.count+1;
可以用hasOwnProperty来验证一下:
当vartest=newTest()时。test.hasOwnProperty("count") ===false
test.increase()后。test.hasOwnProperty("count") ===true
总的来说,JS还是一个很好玩的语言。
相关文章
- 对ajax的理解面试题_javascript面试题大全
- javascript中function用法_年终总结反思不足之处
- array.sort排序_javascript数组排序
- javascript html转换成markdown,如何使用Turndown使用JavaScript将HTML转换为Markdown[通俗易懂]
- 你不知道的javascript中类型和valueOf()和toString()~~!!
- JavaScript 手写面试题(一)
- 一文总结JavaScript手写面试题
- javascript闭包经典面试题
- JavaScript 排序,不只是冒泡详解编程语言
- JavaScript学习总结(二十)——Javascript非构造函数的继承详解编程语言
- JavaScript学习总结(五)——Javascript中==和===的区别详解编程语言
- 一个JavaScript继承的实现
- javascript特性检测并非浏览器检测
- JavaScript滚轮事件使用说明
- 从面试题学习Javascript面向对象(创建对象)
- JavaScript高级程序设计阅读笔记(十六)javascript检测浏览器和操作系统-detect.js
- 获得Javascript对象属性个数的示例代码
- 利用noesis.Javascript开源组件.Net中执行javascript脚本
- JavaScript调试技巧之console.log()详解
- 关于javascript模块加载技术的一些思考
- JavaScript中伪协议javascript:使用探讨
- javascript实现动态模态绑定grid过程代码