身为一个两年半经验的前端,这些问题没答出来其实还是蛮丢人的。
第一个问题:
原型链
这是js常见问题,其实也用过,但是因为业务代码需要用到的原型链的东西比较少,所以写的比较少。然后当场面试官让我随便写一个,一紧张,居然没写出来。(光是这个写不出来,就应该被pass了)
写一个简单的原型继承:
var a = function(){
this.name = "aaa";
};
a.prototype = {
getname : function(){
console.log(this.name);
}
};
var b = new a();
b.getname();//aaa;
通过给a.prototype设置了一个函数对象的属性,那有a实例(例中:b)出来的普通对象就继承了这个属性。具体是怎么实现的继承,就要讲到下面的原型链了。
JS在创建对象(不论是普通对象还是函数对象)的时候,都有一个叫做__proto__的内置属性,用于指向创建它的函数对象的原型对象prototype。
console.log(b.__proto__ === a.prototype) //true
b的原型链指向a的原型对象,因此,b可以继承a的属性。
简单点说,这就是原型链。
JS一直强调万物皆对象,函数对象也是对象,给他认个祖宗,指向Object.prototype。Object.prototype.__proto__ === null,保证原型链能够正常结束。(这句是抄来的,万物皆对象,null生万物)。
第二个问题:
vue{}闪现
(这就不是个问题,看过vue的,全世界的前端,估计就我一个货不记得。)
重点是我用vue单独开发过一个项目,这项目一直在线上,还没被发现过bug。
其实就一个指令 v-cloak
[v-cloak] { display: none; }
angular的是ng-cloak;
第三个问题:
jquery on 和bind的区别
这个不属于冷门知识,但是看过也没有特别去记,加上现在就算用jq也基本都用on了。
jquery文档中bind和on函数绑定事件的用法:
.bind(events [,eventData], handler)
.on(events [,selector] [,data], handler)
可以看出,参数是不同的,on多出一个"selector",那么他们在绑定事件的时候就有了一个最大的区别:bind只能为当前已有的元素绑定事件,而动态添加的元素是绑不上的。但是on是都可以的。
第四个问题:
页面被高并发访问时,怎么处理js,css,图片的。
前端设计的时候css js等要可以复用,尤其是js,页面布局用到的小图标等尽量用雪碧。
css压缩,js压缩,图片懒加载。
问题都很简单,没答出来也确实很low比。
以前不注意总结,现在要开始写下来了,用上用不上,碰上写下来总是有好处的。望各位打算入坑的朋友有这个觉悟。
转载于:https://blog.51cto.com/11490093/1905563