1)apply,call,bind的区别 ?
应用场景:用于改变this的指向
apply接收两个参数,第一个函数this将指向的对象,第二个是数组函数接收的参数
call接收多个参数,第一个函数this将指向的对象,后面依次是函数接收的参数
bind接收多个参数,第一个函数this将指向的对象,后面依次是函数接收的参数,不会执行该函数,而是会返回已经改变了this的实例
2)v-for 和 v-if哪个先执行
v-for先执行
3)下面代码是怎么执行的
var newPromise=new Promise(function(resolve,reject){console.log(1)resolve();console.log(2)}) newPromise.then(function(){console.log(3) }) console.log(4)
1243,只有then里面的函数是回调的
4) angular的脏值检查?
1、检查数据模型的值发生改变时(仅限于内置的指令及方法 1、用户输入,点击,提交 2、请求服务端数据 3、定时事件)
2、会执行$digest遍历监听器判断脏值(判断新的值和旧的值是否相同)
3、如果有脏值(值发生了变化)则持续进行$digest直到值稳定不在发生变化,才会在view里渲染出来
function Scope() {this.$$watchers = []; } var aScope = new Scope(); aScope.firstName = 'Jane'; aScope.lastName = 'Smith';Scope.prototype.$watch = function(watchFn, listenerFn) {var watcher = {watchFn: watchFn,listenerFn: listenerFn};this.$$watchers.push(watcher); };Scope.prototype.$digest = function() {var self = this;_.forEach(this.$$watchers, function(watch) {var newValue = watch.watchFn(self);var oldValue = watch.last;if (newValue !== oldValue) {watch.listenerFn(newValue, oldValue, self);}watch.last = newValue;}); };
5)angular里面的service,factory,provide有什么区别?
1、相同点使用时都是通过依赖注入来使用
2、定义时的差别
factory相当于提供一个方法,通过这个方法定义一个对象,并且给这个对象添加属性和方法,返回这个对象
service的话是直接给this添加属性和方法
provider的话必须体统$get方法该方法和factory一样,并且在加载module时启动时进行配置
6)AngularJS,Vue,React的优缺点?
不同点:
1、AngularJS有依赖注入,双向数据绑定,兼容ie8及ie8以上,使用脏检查,学习成本比较大
2、React函数式编程JSX语法,兼容性好,对javascript基础要求较高
3、Vue只兼容ie8以上版本,采用依赖追踪并且使用异步队列更新,所有数据的都是独立触发的,容易上手
相同点:
1、React和Vue都有虚拟dom,单向数据流
2、Vue与AngularJS都有模板语法
7)angular的常用方法$eval()?
$eval(expression, locals)立刻解析和计算出一个 scope 表达式
$destroy从 scope 链里移除该 scope; scope 和后代们不会收到事件, watcher 也不再被触发。
$broadcast(evt, args)发送事件 evt, 在当前scope 以及它 所有的 children 上触发。
$emit(evt, args)发送事件 evt, 在scope 链上冒泡,在当前scope 以及所有的 $parents 上触发,包括 $rootScope。
$watch(watchExp, listener, objectEquality)为scope添加一个 watch 监听器。