驗證網址:https://www.regextester.com/22

const ipRegex = 
/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.)
{3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;

const portRegex = 
/^([0-9]{1,4}|[1-5][0-9]{4}|6[0-4][0-9]{3}|
65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5])$/;
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

<form-string
    :label="_('w_License_License_Key')"
    v-model="inputLicenseData.licenseKey"
    :placeholder="_('w_License_License_KeyPlaceholder')"
    :maxlength="29"
></form-string>

// ts寫法
// 限輸入英文、數字,格式:xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
@Watch("inputLicenseData.licenseKey")
valueChange(value) {
    this.$nextTick(() => {
        this.inputLicenseData.licenseKey = value 
        .replace(/\s/g, "") .replace(/[^0-9a-zA-Z]/g, "") 
        .replace(/([0-9a-zA-Z]{5})(?=[0-9a-zA-Z])/g, "$&-");
    });
}
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

getTwoPointAngle(px1: number, py1: number, px2: number, py2: number) {
    const x = Math.abs(px1 - px2);
    const y = Math.abs(py1 - py2);

    const z = Math.sqrt(x * x + y * y);

    const angle = Math.round((Math.asin(y / z) / Math.PI) * 180); //最終角度

    return angle;
}
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

根據經緯度計算與正北方向的夾角,以順時針為方向的角度

參考:https://software.intel.com/en-us/blogs/2012/11/30/calculating-a-bearing-between-points-in-location-aware-apps

以下的公式,可以在下列網址驗證

https://www.igismap.com/map-tool/bearing-angle

https://www.sunearthtools.com/tools/distance.php#contents

文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 使用函數內部的變數在函數執行完後,仍然存活在記憶體中(延長了區域變數的生命周期)
2. 讓函數外部可以操作(讀 / 寫)到函數內部的數據(變數 / 函數)

問題:
  1. 函數執行完後,函數內部聲明的區域變數是否還存在?
-- 一般是不存在的,但如果是存在於閉包中的變數才可能存在
  2. 在函數外部能直接訪問函數內部的區域變數嗎?
-- 不能,但可以通過閉包讓外部操作它
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 如何產生閉包?
-- 當一個嵌套的內部(子)函數引用了嵌套的外部(父)函數的變數(函數)時,就產生了閉包
2. 閉包到底是什麼?
-- 使用chrome調試查看
-- 理解一: 閉包是嵌套的內部函數(絕大部分人)
-- 理解二: 包含被引用變數(函數)的對像(極少數人)
-- 注意: 閉包存在於嵌套的內部函數中
3. 產生閉包的條件?
--  函數嵌套
--  內部函數引用了外部函數的數據(變數 / 函數)
--  執行外部函數
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

奧丁丁的面試紀錄
由奧丁丁主動找我面試的
原本看到應徵的是senior,而我一個完全沒有實務經驗的人,我自己覺得不合適就回拒了,而對方說我可以試試看,可以和主管聊聊,我就答應了XDD
 
一來先考試,40分鐘,題目如下(原考題是英文的),時間到了,但我沒寫完~~
 
1.給一個隨機排序的陣列 ([77, 54, 3, 10, 987, 105, 50]) , 請sort此陣列
2. 給一個字串"”Hello World",請reverse此字串
3.請描述打開網頁後會發生什麼事(主要是問client端和server端的請求回應過程、渲染方式)
4.什麼是Promise
5.如果你是一個領導者,要怎樣和PM、前端、後端、UIUX合作
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 變數聲明提升 / 變數提升
-- 通過var定義(聲明)的變數,在定義語句之前就可以訪問到
-- 值:undefined
2. 函數聲明提升 / 函數提升
-- 通過function聲明的函數,在之前就可以直接調用
-- 值:函數定義(對象)
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 原型鏈
-- 訪問一個物件的屬性時,
---- 先在自身屬性中查找,找到返回
---- 如果沒有,再沿著__proto__這條鏈向上查找,找到返回
---- 如果最終沒找到,返回undefined
--  別名: 隱式原型鏈
--  作用: 查找物件的屬性(方法)
2. Function = new Function():實例對象才有隱式原型(屬性)__proto__   而實例對象的隱式原型(屬性)__proto__ 等於 構造函數的顯式原型(屬性)prototype
3. 所有函數的隱式原型(屬性)__proto__都是一樣的
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 每個函數function都有一個prototype,即顯式原型(屬性)
2. 每個實例對像都有一個__proto__,可稱為隱式原型(屬性)
3. 對像的隱式原型的值為其對應構造函數的顯式原型的值
4. 總結:
-- 函數的prototype屬性:在定義函數時自動添加的,默認值是一個空Object實例對象
-- 物件的__proto__屬性:創建對像時自動添加的,默認值為構造函數的prototype屬性值
-- 程序員能直接操作顯式原型,但不能直接操作隱式原型(ES6之前)

 

文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 函數的prototype屬性
-- 每個函數都有一個prototype屬性, 它默認指向一個Object空物件(即稱為: 原型物件)
-- 原型對像中有一個屬性constructor, 它指向函數物件
2. 給原型對像添加屬性(一般都是方法)
-- 作用: 函數的所有實例對像自動擁有原型中的屬性(方法)
-- 原型上面的方法是給實例對象使用的

 

文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 函數的this是什麼?
-- 任何函數本質上都是通過某個物件來調用的,如果沒有指定就是window
-- 所有函數內部都有一個變量this
-- this的值是調用函數的當前物件
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 理解
-- 全稱: Immediately-Invoked Function Expression 匿名函數自調用
2. 作用
-- 隱藏實現
-- 不會污染全域的命名空間
-- 用來編寫js模塊

 

文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 什麼函數才是回調函數?
1)我定義的
2)我沒有調
3)最終它執行了(在某個時刻或某個條件下)

2. 常見的回調函數?
-- DOM事件回調函數 ==> this:發生事件的DOM元素(用戶操作的元素)
-- 定時器回調函數 ==> thiswindow
-- ajax請求回調函數
-- 生命週期回調函數
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()

1. 什麼是函數?
-- 具有特定實現功能的n條語句封裝體
-- 只有函數是可以執行的,其他類型的數據不能執行

2. 為什麼要用函數?
-- 提高code的重複使用率
-- 便於閱讀交流

3. 如何定義函數?
-- 函數聲明
-- 表達式
文章標籤

bingzhichen 發表在 痞客邦 留言(0) 人氣()