身为一个两年半经验的前端,这些问题没答出来其实还是蛮丢人的。

    

    第一个问题:

    原型链

    这是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比。


以前不注意总结,现在要开始写下来了,用上用不上,碰上写下来总是有好处的。望各位打算入坑的朋友有这个觉悟。