有一個全局變量 a,有一個全局函數 b,實現一個方法bindData,執行後,a的任何賦值都會觸發b的執行。javascript
vue簡單的雙向綁定原理css
function bindData(target, event){
for(var key in target) {
if(target.hasOwnProperty(key)) {
(function(){
var v = target[key];
Object.defineProperty(target, key, {
get: function() {
return v;
},
set: function(_value) {
v = _value;
event.call(this)
}
})
})()
}
}
}
複製代碼
將數字轉換成中文大寫的表示,處理到萬級別,例如 12345 -> 一萬二千三百四十五 CodePenhtml
react生命週期 參考答案前端
閉包vue
v8引擎區別瀏覽器作的優化java
編譯型和解釋型語言的區別node
跟緩存相關的配置react
如何提升webpack打包的速度webpack
nginx 轉發的配置css3
node 的一些特色
node對於字節流的控制
如何處理js的錯誤:eslint。
node垃圾回收
js內存溢出
if([]) 是true,可是[]==false,由於任何類型跟bool比較都會先轉化爲數值型。[]是object ,if的時候不是false。
()=>{} 箭頭函數的區別
實現一個function 輸入字符串,驗證其字符串是合法的html標籤,只要開閉合理就能夠。使用棧來解決。
setTimeout(function(){},0)和process.nextTick()的區別
紅黑樹
promise,原生寫一個
取得body下全部元素的tagname,並去重輸出。
前端國際化
react組件,如何更換主題
setImmediate
flex佈局 ie10 11不支持
css選擇器優先級:developer.mozilla.org/zh-CN/docs/…
事件驅動
viewport有幾種
prerender
[]==[] false 基本數據類型是值的比較,引用類型是地址的比較。
__proto__和prototype
Object.prototype.__proto__=null
Object.__proto__=== Function.prototype
Function.__proto__===Function.prototype
Function.__proto__.__proto__=== Object.prototype
複製代碼
事件過程 事件捕獲-》目標-》事件冒泡
阻止冒泡方法
// 阻止冒泡
stopPropagation() //chrome
event.cancelBubble() //IE
// 阻止默認事件
preventDefault() //chrome
event.returnValue() //IE
//JQuery 提供了兩種方式來阻止事件冒泡。
$("#div1").mousedown(function(event){
event.stopPropagation();
});
$("#div1").mousedown(function(event){
return false;
});
複製代碼
斷點續傳,斷點下載
array的基本方法
arguments轉化爲真正的數組Array.prototype.slice.call(arguments)
js數組去重
//for循環時,每次取出一個元素與對象///進行對比,若是這個元素不重複,則把//它存放到結果數組中,同時把這個元素的內容做爲對象的一個屬性,並賦值爲1,存入到第2步創建的對象中。
Array.prototype.unique3 = function(){
var res = [];
var json = {};
for(var i = 0; i < this.length; i++){
if(!json[this[i]]){
res.push(this[i]);
json[this[i]] = 1;
}
}
return res;
}
var arr = [112,112,34,'你好',112,112,34,'你好','str','str1'];
alert(arr.unique3());
複製代碼
深拷貝 CodePen
var clone = function(v) {
var o = v.constructor === Array ? [] : {};
for (var i in v) {
o[i] = typeof v[i] === "Object" ? clone(v[i]) : v[i];
}
return o;
}
複製代碼
閉包
閉包是指有權訪問另外一個函數做用域中的變量的函數. 建立閉包常見方式,就是在一個函數內部建立另外一個函數.
爲何會出現閉包這種東西,解決了什麼問題
受JavaScript鏈式做用域結構的影響,父級變量中沒法訪問到子級的變量值,爲了解決這個問題,才使用閉包這個概念。
交換兩個變量的值,但不產生新的變量
var a=1;
var b=2;
a=a+b;
b=a-b;
a=a-b;
複製代碼
函數防抖和函數節流
var timer = false
document.getElementById("debounce").onScroll = function() {
clearTimeout(timer)
timer = setTimeout(function(){
console.log(‘函數防抖’)
}, 300)
}
複製代碼
var canScroll = true;
document.getElementById('throttle').onScroll = function() {
if (!canScroll) {
return;
}
canScroll = false;
setTimeout(function(){
console.log('函數節流');
canScroll = true;
},300)
}
複製代碼
js繼承 理解JS的6種繼承方式
call 和apply 詳解call和apply
node延遲函數執行順序是什麼?
setTimeout(()=>{
console.log(3)
},0);
setImmediate(()=>{
console.log(2)
});
process.nextTick(()=>{
console.log(4)
})
// 4 2 3
以上代碼的執行順序爲:
1. process.nextTick
2. setImmediate
3. setTimeout
複製代碼
嚴格模式: "use strict"
數據類型: 6種,Undefined,Null,Boolean,Number,String,Object.注意數據不是哈,數組被歸於object
使用typeof操做符,可能返回如下六種結果:undefined,boolean,string,number,object,function.
typeof null=object
函數不是一種數據類型。
雖然null==undefined ,但null指的是一個空的對象引用。undefined 代表變量沒有被賦值或者未定義。
永遠不要測試某個特定的浮點數
NaN是一種數值,NaN與任何數都不等,包括他自己。
Number() 能夠轉換任何數據類型,parseInt()和parseFloat()只能字符串轉數值
Number(true)=1,Number(false)=0,Number(null)=0,Number("")=0
其餘類型轉化爲字符串,.toString()方法,String(),區別在於null和undefined沒有toSting()方法,必需要用String()
判斷一個值是哪一種基本類型使用typeof ,是哪一種引用類型用instanceof
讓js啓動變量的回收,var a=121,a=null
僞形成合法用戶發起請求。一個網站中有一個a標籤href是刪除用戶信息的url,若是是post能夠模擬表單提交。
localStorage.setItem("key","value")
localStorage.getItem("key","value")
localStorage.removeItem("key")
localStorage.clear()
複製代碼
實現圖片邊框和漸變邊框
border-image:url() linear-gradient(red, yellow) 10;
複製代碼
多背景設置
background-image: url(https://mdn.mozillademos.org/files/11305/firefox.png),
url(https://mdn.mozillademos.org/files/11307/bubbles.png),
linear-gradient(to right, rgba(30, 75, 115, 1), rgba(255, 255, 255, 0));
複製代碼
文字省略樣式:
text-overflow:ellipsis;
overflow:hidden;
white-space:nowrap;
複製代碼
文字波浪下劃線
text-decoration:green wavy underline
複製代碼
清除浮動方法 CodePen
等高佈局 CodePen
盒子模型 box-sizing
content-box = width (content的寬)
border-box = width + border + padding
複製代碼
垂直水平居中 CodePen
自適應居中 CodePen
css3實現正方形
css3新特性(舉幾個例子)
Text-fill-color: 文字內部填充顏色
Text-stroke-color: 文字邊界填充顏色
Text-stroke-width: 文字邊界寬度
複製代碼
background-image:-webkit-gradient(linear,0% 0%,100% 0%,from(#2A8BBE),to(#FE280E));
複製代碼
flex佈局
Transitions, Transforms 和 Animation CodenPen
css 預編譯
var tem="我愛你,${0},${1}"
var a="小吳"
var b="小劉"
function tempFunc(template){
var reps=template.match(/\${[\d]+}/g)
for(let i=0;i<reps.length;i++){
var ar=arguments[i+1]
if(ar){
template=template.replace(reps[i],ar)
}else{
template=template.replace(reps[i],"")
}
}
return template
}
var t=tempFunc(tem,a,b)
複製代碼
'1234567891'.replace(/(\d+?)(?=(\d{3})+$)/g, '$1,')
複製代碼
new Number(string.replace(/[^0-9.]/g,''))
複製代碼
歡迎訪問個人我的網站:yondu.vip