js部分基礎
阿新 • • 發佈:2018-03-14
cli undefined 堆內存 defined 另一個 leg his 創建 name
1.js的基本類型有哪些?引用類型有哪些?null和undefined的區別。
基礎類型:number,null,regex,string,boolean 引用類型 : object,function,array null是數據類型,undefined未定義
2.如何判斷一個變量是Array類型?
array:Object.prototype.toString.call(obj) [object Array]
3.引用類型和基本類型的區別
引用類型:堆內存,是二級緩存,保存一個指針,指向另一個內存,如果程序不結束或者沒有手動釋放,則不釋放 基本類型:棧內存,是一級緩存,由系統分配或者釋放。
4.事件委托(手寫例子)
<div id=‘parent‘></div> <script> function delegate(dom,type,fn){ document.body.click(function(e){ if(e.target = dom){ fn(e) } }) } <script>
5.對閉包的理解,閉包的優缺點?
閉包:一個可以讓外部訪問的函數。消耗內存
6.改變this的幾種方法?
call , apply , bind
7.顯式和隱式原型
顯式原型:prototype , Function是一個Object,Function有一個屬性prototype,它是一個指針,指向一個對象。這個對象有construsctor屬性 隱式原型:_proto_ ,指向創建這個對象的函數的prototype,一個指針指向一個對象。
8.創建對象的多種方式
//字面量 var obj = {name:‘test‘} //構造函數 var obj = new Object({name:‘‘})
9.實現繼承的多種方式和優缺點
//原型鏈 function Parent(){ this.name=‘‘ } function Son(){} Son.prototype = new Parent() //創建新對象 var son = Object.create(new Parent()) //call,apply function Son(){ Parent.call(this,‘‘) }
10.變量提升
var value = 1; var test = function(){ console.log(value) var value = 2; } test() function test(){ console.log(value+1) } test(); // undefined , undefined
11.匿名函數
(function(){ alert(‘test‘) })()
12.NaN != NaN,false != null
13.new 一個對象的過程
function ClassName (option){ console.log(option) } ClassName.prototype.say=function(){} let obj = new ClassName({}) 1.創建一個對象,傳入原型 lo = Object.create(ClassName.prototype) 2.執行當前函數,並且this執行 newObj = ClassName.call(o) 3. 返回新的對象 newObj
14.
js部分基礎