阿里巴巴前端面试题小结(欢迎参考交流)
1.flash和js通过什么进行交互?
答:flash提供了ExternalInterface接口与JS进行通信,有两个方法call(让flash调用JS的方法)和addCallback(用来注册flash函数让JS调用);
2.border: none和border: 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
浙公网安备 33010602011771号