20190423面试记录
1)apply,call,bind的區(qū)別 ?
應(yīng)用場(chǎng)景:用于改變this的指向
apply接收兩個(gè)參數(shù),第一個(gè)函數(shù)this將指向的對(duì)象,第二個(gè)是數(shù)組函數(shù)接收的參數(shù)
call接收多個(gè)參數(shù),第一個(gè)函數(shù)this將指向的對(duì)象,后面依次是函數(shù)接收的參數(shù)
bind接收多個(gè)參數(shù),第一個(gè)函數(shù)this將指向的對(duì)象,后面依次是函數(shù)接收的參數(shù),不會(huì)執(zhí)行該函數(shù),而是會(huì)返回已經(jīng)改變了this的實(shí)例
2)v-for 和 v-if哪個(gè)先執(zhí)行
v-for先執(zhí)行
3)下面代碼是怎么執(zhí)行的
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里面的函數(shù)是回調(diào)的
4)? angular的臟值檢查?
1、檢查數(shù)據(jù)模型的值發(fā)生改變時(shí)(僅限于內(nèi)置的指令及方法 1、用戶輸入,點(diǎn)擊,提交 ? 2、請(qǐng)求服務(wù)端數(shù)據(jù)? 3、定時(shí)事件)
2、會(huì)執(zhí)行$digest遍歷監(jiān)聽器判斷臟值(判斷新的值和舊的值是否相同)
3、如果有臟值(值發(fā)生了變化)則持續(xù)進(jìn)行$digest直到值穩(wěn)定不在發(fā)生變化,才會(huì)在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有什么區(qū)別?
1、相同點(diǎn)使用時(shí)都是通過依賴注入來使用
2、定義時(shí)的差別
factory相當(dāng)于提供一個(gè)方法,通過這個(gè)方法定義一個(gè)對(duì)象,并且給這個(gè)對(duì)象添加屬性和方法,返回這個(gè)對(duì)象
service的話是直接給this添加屬性和方法
provider的話必須體統(tǒng)$get方法該方法和factory一樣,并且在加載module時(shí)啟動(dòng)時(shí)進(jìn)行配置
?
6)AngularJS,Vue,React的優(yōu)缺點(diǎn)?
不同點(diǎn):
1、AngularJS有依賴注入,雙向數(shù)據(jù)綁定,兼容ie8及ie8以上,使用臟檢查,學(xué)習(xí)成本比較大
2、React函數(shù)式編程JSX語法,兼容性好,對(duì)javascript基礎(chǔ)要求較高
3、Vue只兼容ie8以上版本,采用依賴追蹤并且使用異步隊(duì)列更新,所有數(shù)據(jù)的都是獨(dú)立觸發(fā)的,容易上手
相同點(diǎn):
1、React和Vue都有虛擬dom,單向數(shù)據(jù)流
2、Vue與AngularJS都有模板語法
?
7)angular的常用方法$eval()?
$eval(expression, locals)立刻解析和計(jì)算出一個(gè) scope 表達(dá)式
$destroy從 scope 鏈里移除該 scope; scope 和后代們不會(huì)收到事件, watcher 也不再被觸發(fā)。
$broadcast(evt, args)發(fā)送事件 evt, 在當(dāng)前scope 以及它 所有的 children 上觸發(fā)。
$emit(evt, args)發(fā)送事件 evt, 在scope 鏈上冒泡,在當(dāng)前scope 以及所有的 $parents 上觸發(fā),包括 $rootScope。
$watch(watchExp, listener, objectEquality)為scope添加一個(gè) watch 監(jiān)聽器。
?
轉(zhuǎn)載于:https://www.cnblogs.com/llcMite/p/10757398.html
總結(jié)
以上是生活随笔為你收集整理的20190423面试记录的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java总结:正则表达式进行校验
- 下一篇: SVN:安装svn进行上传和检出文件的常