阿里巴巴前端面试题小结(欢迎参考交流)

1.flash和js通过什么进行交互?

答:flash提供了ExternalInterface接口与JS进行通信,有两个方法call(让flash调用JS的方法)和addCallback(用来注册flash函数让JS调用);

2.border: noneborder: 0;的区别

答:引入<CSS权威指南>中的描述:"边框宽度的默认值为medium,这个值没有明确定义,但通常是2px,但还是看不到边框,这是因为边框样式的默认值为none(如果一个边框没有样式,则它就不存在)"

3.填写内容让代码支持a.name = "name1";b.name = "name2";

 

function obj(name){
   // do sth one
}

obj.// do sth two = "name2";

var a = obj("name1");

var b = new obj;

 

do sth one:

if(name){
  this.name = name;
}
return this;
// 一般函数直接调用,this默认都会指向window(global object),通过obj("name1")调用,返回this的引用,并传给a,此时a等于window对象
// new obj 等同于 new obj() 实例化一个对象,这时this指向obj,要拿到b.name的值,就要确保name属性值存在;
// 属性查找遵循逐级向上规则,首先查找当前实例,如没有查找当前实例的原型;如没有就会跳到外层作用域中查找...

do sth two:

prototype.name

4.输出对象中值大于2的key的数组

var data = {a: 1,b: 2, c: 3,d: 4};

Object.keys(data).filter(function(x){

  return // do sth three

})

do sth three:

data[x] > 2;

filter属于数组的迭代方法,会创建一个新的数组;

   参数为一个函数(数组中的每个元素都会一次执行这个函数以起到筛选的作用);

   通过指定规则来决定返回的数组内的组成元素(不会对空数组进行检测且不会改变原数组)]

Object.keys(obj)的参数必须是对象(否则抛出typeError异常),返回的是由对象中的属性或者方法的名称组成的数组.

5.split()和join()方法不传递参数和传递空字符串作为参数的区别

答:split()不传递参数返回的数组长度为1,且元素是整个字符串

     传递空字符串返回的数组的长度就是字符串的长度,数组元素也就是字符串的每个子字符.

"11223344".split()  // ['11223344']

"11223344".split("")  // ["1","1","2","2","3","3","4","4"]

  join()不传递参数返回的是数组元素之间用,号相连的字符串

      传递空字符串返回的就是数组元素直接连接的字符

['1','2','3'].join()  // "1,2,3"

['1','2','3'].join("")  //123

 

posted on 2017-05-10 16:37  不二马  阅读(230)  评论(0)    收藏  举报

导航