2016-04-05 阿里巴巴前端开发工程师二面面试题目

匿名网友 匿名网友 发布于: 2016-04-28 00:00:00
阅读 159 收藏 0 点赞 0 评论 0

/*1.为什么要有两种盒模型?IE的盒模型存在的必然性是什么?

    答:标准盒模型中width和height指的是内容区域的宽度和高度,增加内边距、边框和外边距不会

       影响内容区域的尺寸,但是会增加元素框的总尺寸;但在IE6浏览器的width不是内容的宽度,而是内容、

       内边距和边框的宽度总和。

       实际上IE的盒模型更加合理,w3c意识到了这个问题,重新定义盒模型是不可能的,所以在CSS3中,

       有这个属性:box-sizing,其有两个可选值,一个是默认的content-box一个是border-box,选用后者,

       盒模型将按IE6的方式进行处理。

2.设计页面时,使用哪种盒模型?如何兼顾IE和其他浏览器来设计?

3.如何实现模块化?(用过commonJS之类的么)

4.学习一下React、NodeJS、webpack*/

 

 

/*

* 遇到这样一道题:

 (function(){

 function A(){

 var v = ‘a’;

 this.getVar = function(){

 console.log(v);

 }

 }

 function B(){

 var v = ‘b’;

 A.call(this);

 }

 var b = new B();

 b.getVar();

 }());

 最后的结果输出竟然是a,在学校论坛上问过之后,终于明白了,当A.call(this);在执行的时候,是将this作为上下文传递给A立即执行,相当于是有一个IIFE,当前执行环境是this。所以按照理解应该是下面这样:

 var v = ‘b’;

 (function(self){

 var v = ‘a’;

 self.getVar = function(){

 console.log(v);

 }

 })(this);

 此时B中的代码相当于是这样:

 (function(){

 function A(){

 var v = ‘a’;

 this.getVar = function(){

 console.log(v);

 }

 }

 function B(){

 var v = ‘b’;

 (function(self){

 var v = ‘a’;

 self.getVar = function(){

 console.log(v);

 }

 })(this);

 }

 var b = new B();

 b.getVar();

 }());

 所以在进行b.getVar();时,根据作用域链,会先找到’a’。并没对B的作用域中的v进行改变,编写函数,仍可访问到’b’。

 (function(){

 function A(){

 var v = ‘a’;

 this.getVar = function(){

 console.log(v);

 }

 }

 function B(){

 var v = ‘b’;

 A.call(this);

 this.getV = function(){

 console.log(v);

 }

 }

 var b = new B();

 b.getVar();      //a

 b.getV();        //b

 }());

* */

 

评论列表
文章目录