<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] ## 3 [\core\util\] 基礎工具目錄 ### 3-1 目錄文件 ### 3-2 (index.js)入口文件 >[export] ~~~ ;(導出)工具接口 export * from 'shared/util' export * from './lang' export * from './env' export * from './options' export * from './debug' export * from './props' export { defineReactive } from '../observer/index' ~~~ ### 3-3 (lang.js)語言擴展工具 >[info] module ~~~ ;字符串是否以$或_開頭 export function isReserved (str) { const c = (str + '').charCodeAt(0) return c === 0x24 || c === 0x5F } ;對象屬性定義 export function def (obj, key, val, enumerable) { Object.defineProperty(obj, key, { value: val, enumerable: !!enumerable, writable: true, configurable: true }) } ;路徑解析 const bailRE = /[^\w\.]/ export function parsePath (path) { if (bailRE.test(path)) { return } else { path = path.split('.') return function (obj) { for (let i = 0; i < path.length; i++) { if (!obj) return obj = obj[path[i]] } return obj } } } ~~~ >[info] export ~~~ ;(導出)檢查字符串是否以$或_開頭 export function isReserved (str) {} ;(導出)定義對象的一個屬性 export function def (obj, key, val, enumerable){} ;(導出)點路徑解析 export function parsePath (path) {} ~~~ ### 7-4 (env.js)環境工具 >[info] module ~~~ ;檢查簡單對象是否有__proto__屬性 export const hasProto = '__proto__' in {} ;檢查是否瀏覽器運行環境 export const inBrowser = typeof window !== 'undefined' && Object.prototype.toString.call(window) !== '[object Object]' ;開發工具 export const devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__ ;瀏覽器客戶端類型 const UA = inBrowser && window.navigator.userAgent.toLowerCase() const isIos = UA && /(iphone|ipad|ipod|ios)/i.test(UA) const isWechat = UA && UA.indexOf('micromessenger') > 0 ;異步運行 export const nextTick = (function () { let callbacks = [] let pending = false let timerFunc ;異步調用接口 function nextTickHandler () { pending = false const copies = callbacks.slice(0) callbacks = [] for (let i = 0; i < copies.length; i++) { copies[i]() } } ;生成異步執行函數timerFunc if (typeof MutationObserver !== 'undefined' && !(isWechat && isIos)) { let counter = 1 const observer = new MutationObserver(nextTickHandler) const textNode = document.createTextNode(counter) observer.observe(textNode, { characterData: true }) timerFunc = function () { counter = (counter + 1) % 2 textNode.data = counter } } else { const context = inBrowser ? window : typeof global !== 'undefined' ? global : {} timerFunc = context.setImmediate || setTimeout } ;返回異步執行函數 return function (cb, ctx) { const func = ctx ? function () { cb.call(ctx) } : cb callbacks.push(func) if (pending) return pending = true timerFunc(nextTickHandler, 0) } })() ;環境表的添加,檢查,清空操作 let _Set if (typeof Set !== 'undefined' && Set.toString().match(/native code/)) { _Set = Set } else { _Set = function () { this.set = Object.create(null) } _Set.prototype.has = function (key) { return this.set[key] !== undefined } _Set.prototype.add = function (key) { this.set[key] = 1 } _Set.prototype.clear = function () { this.set = Object.create(null) } } ;導出環境表接口 export { _Set } ~~~ >[info] export ~~~ ;(導出)是否可以使用__proto__ export const hasProto ;(導出)是否瀏覽器運行環境 export const inBrowser ;(導出)開發環境工具 export const devtools ;(導出)異步執行 export nextTick{} ;(導出)環境集合 export { _Set } ~~~ ### 3-5 (options.js) ### 3-6 (debug.js) ### 3-6 (props.js) ### 3-7 (defineReactive) ![](https://box.kancloud.cn/2016-05-06_572bf6c0146bf.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看