问题:为什么newVue根中的data可以直接写
解析:newVue根组件不需要复用,因此不需要以函数方式返回
问题:vue中组件的data为什么要写成函数形式
解析:在Vue中,组件都是可复用的,一个组件创建好后,可以在多个地方重复使用,而不管复用多少次,组件内的data都必须是相互隔离,互不影响的,如果data以对象的形式存在,由于Javascript中对象是引用类型,作用域没有隔离,因此data必须以函数的形式返回
问题:vue-router中hash/history是如何实现的?
解析:hash模式
#后面hash值的变化,不会导致浏览器向服务器发出请求,浏览器不发出请求,就不会刷新页面,同时通过监听hashchange事件可以知道hash发生了哪些变化。根据hash变化来实现页面的局部更新
history模式
history模式的实现,主要是Html5标准发布的两个Api(pushState和replaceState),这两个Api可以改变url,但是不会发送请求,这样就可以监听url的变化来实现局部更新
Js和native交互的方法与问题
实现JS和Native交互有两种方式:
第一种:shouldOverrideUrlLoading(WebViewview,Stringurl)通过给WebView加一个事件监听对象(WebViewClient)并重写shouldOverrideUrlLoading(WebViewview,Stringurl)方法。当按下某个连接时WebViewClient会调用这个方法,并传递参数view和url
第二种:JS和Java互调WebView开启JavaScript脚本执行WebView设置供JavaScript调用的交互接口
Eval函数的作用
eval可以将字符串生成语句执行,一般执行动态的js语句。eval的使用场合:有时候我们预先不知道要执行什么语句,只有当条件和参数给时才知道执行什么语句,这时候eval就派上用场了。
开课吧Web前端面试题