前端JS面試題

2021-09-29 05:13:52 字數 3636 閱讀 6528

在引數過多的時候,call 的效能會好一些

console.time 可以測試一段程式執行的時間 console.timeend

假設 arr 是乙個陣列,它之所以可以呼叫 arr.push()這個方法式因為 它是array的例項,可以繼續呼叫array原型上面的  push 方法
~function()

function add(n)

function minus(n)

['add','minus'].foreach(item=>)

}()console.log((5).add(3).minus(2))

箭頭函式與普通函式區別
let str = 'sdsdsdsdsad哈哈哈sdjshjjkj';

str = str.replace(/[a-za-z]/g,content=>)

實現乙個字串匹配演算法,從字串 s 中,查詢是否存在字串 t ,若存在返回所在位置,不存在返回 -1! (如果不能基於 indexof / includes等內建得方法,你會怎麼處理)
//使用正則

~function()

string.prototype.myindexof = myindexof

}()//常規解法

~function()

} return res

} string.prototype.myindexof = myindexof

}()

var a = {}, b = '123',c =123;

a[b] = 'b'

a[c] = 'c'

console.log(a[b])

a = //輸出

//因為後面得會替換前面得 物件屬性key 可以為字串也可以數字 a['123'] <=>a[123]

var a = {}, b = symbol('123'),c =symbol(123);

a[b] = 'b'

a[c] = 'c'

console.log(a[b])

//symbol 是es6中新增得資料型別, symbol(123) === symbol(123) false 它建立出來得值是唯一值

}//把foo當做類,在原型上設定例項共有的屬性方法=》例項.a()

foo.prototype.a=

function()

//把foo當做普通物件設定私有的屬性方法 =》foo.a()

foo.a=

function()

foo.a(

)//輸出4

let obj =

newfoo()

//生成 foo 例項 obj 可以調取原型上的方法 foo.a : f=>1 obj.a:f=>2

obj.a(

)//輸出2 私有屬性中有a

foo.a(

)//在私有屬性上面找 所以輸出1

處理方案

function $attr(props,value))

el = array.from(el)//把非陣列轉換成陣列

el.foreach(item=>

if (itemvale===value)

}) return arr

}

let reg = \\b[a-z]+\b\ig;

str = str.replace(reg,value=>).trim()//首尾去除空格

function mynew(fn,...arg)

// //讓他的原型鏈之指向 fn.prototype(作為fn 的乙個例項)

// obj.__proto__ = fn.prototype

let obj = object.create(fn.prototype)

物件):建立乙個空物件,並且讓空物件obj作為aa物件所屬建構函式的例項

//(obj.__proto__ = aa)

fn.call(obj,...arg)

return obj

}

let ary1 = ['a1','a2','b2','c1','c2','c3','d','d1']

let ary2 = [a','b2','c1]

let n= 0

for(var i = 0;i

實現 a1 && a2 && a==3

if (a==1 && a==2 && a==3)

//方法一:

var a =

}//方法二:

//shift :刪除第一項,把刪除的內容返回,原有陣列改變

let a = [1,2,3]

a.tostring = a.shift

//方法三:

letn = 0

object.definproperty(window,'a',

})

let obj =  

obj.push(1)

//this : obj obj[obj.length] = 1 ==> obj[2] = 1 ==> obj.length = 3

obj.push(2)

//this : obj obj[obj.length] = 2 ==> obj[3] = 1 ==> obj.length = 4

console.log(obj)

array.prototype.push = function aa()

let ary = [1,5,4,2,8,9]

let ary = [1,5,4,2,8,9]

function bubble(ary)

} }return ary

}

function insert(ary)

if (j===0)

} }return handel

}

add(1)

add(1)(2)

add(1)(2)(3)

add(1)(2)(3)(4)

Js前端面試題

1.判斷js型別的方法 1 typof 2 可以判斷出 string boolean undefiend number 3 但是判斷typeof null 時值為object 判斷物件陣列的時候也是object object.prototype.tostring.call 可以判斷出所有型別 arr...

前端面試題 Js

1.原型 原型鏈 建構函式 例項 繼承 原型 proto 原型物件 prototype 用作建構函式中有prototype 原型物件 例項中有 proto 2.有幾種方式可以實現繼承 原型繼承,構造繼承,例項繼承,拷貝繼承,組合繼承,寄生組合繼承,class繼承 3.用原型實現繼承有什麼缺點,如何解...

array 前端面試題 JS陣列的前端面試題

關於陣列的前端面試題 如何判斷乙個變數是否為陣列?為什麼不用 typeof var list 1,2,3 typeof list object array 繼承與object 所以typeof 會直接返回 object 所以不可以用 typeof 方法來檢測 為什麼不用 instanceof?var...