自言自语WEB前端面试题(二)
2018-06-24 01:42:16来源:未知 阅读 ()
今天换道题,新鲜出炉的
var Model=function(){ this.name='lilei'; this.age=20; } Model.prototype.say=function(){ console.log(this.name);//① console.log(this.getFullName());//② function test(){ console.log(this.name);//③ console.log(this.getFullName());//④ } test(); } Model.prototype.getFullName=function(){ return this.name+''; }; var m=new Model(); m.say();
哇,这个题乍一看有点绕。我们可以简单的分析一下
首先我们先注意下这段代码主要做了什么:
创建一个构造函数Model,利用Model去构建m对象
构造函数原型对象定义了两个函数, say 和 getFullName
m调用 say 函数 ,其中 say 函数内的 this 此时指向对象 m
m有两个属性 name 和 age 所以 ① 输出 lilei
调用getFullName函数的是say中的this 根据上下文 他应该是m
函数内在最后返回了一个 this.name+'' 这个时候根据上下文
this指向依然是m JavaScript的链式调用在这里也有一些体现
所以②输出内容为 lilei
当test在say函数内声明 并且调用时,我们只需要关注一件事
调用test的是谁 如果没有任何指示,他的上下文就是window
那③ 输出结果就是window.name 它默认是个空字符串
④这里会直接报错,因为window内不存在getFullName函数
正确的输出结果是:
——————end——————
这几天在做活动,后面可能要进入正式开发的流程了
最近真的闲的长毛了,虽然还挺爽,但是长期不正经开发工作很容易懒惰的
加了个油~~
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 高效Web开发的10个jQuery代码片段 2020-02-15
- web如何实现页面分页打印 2020-02-14
- 详解Webstorm 新建.vue文件支持高亮vue语法和es6语法 2020-02-07
- JSP session配置对web应用的影响 2019-12-27
- 详解node.js进行web开发的操作方法 2019-12-14
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash