js面試相關

 

〇,字符串,數值,數組的轉化html

(0)檢測數據類型git

參考鏈接:http://www.cnblogs.com/onepixel/p/5126046.htmlgithub

1,, typeof 操做符 :  能檢測到(string, undefined, number, boolean, function(函數), object(NULL,數組,對象);缺點:不管啥類型的對象,返回的都是object;使用方法: typeof a;web

2,, instanceOf 操做符 :  檢測一個對象是否爲某個構造函數的實例 ;使用方法: arr instanceof Array; arr instanceOf Function;數組

3,, isPrototypeOf 方法 :  檢測是否是該對象的原型瀏覽器

4,, toString() 是 Object 的原型方法,調用該方法,默認返回當前對象的 [[Class]] 閉包

Object.prototype.toString.call('') ;   // [object String]
Object.prototype.toString.call(1) ;    // [object Number]
Object.prototype.toString.call(true) ; // [object Boolean]
Object.prototype.toString.call(Symbol()); //[object Symbol]
Object.prototype.toString.call(undefined) ; // [object Undefined]
Object.prototype.toString.call(null) ; // [object Null]
Object.prototype.toString.call(new Function()) ; // [object Function]
Object.prototype.toString.call(new Date()) ; // [object Date]
Object.prototype.toString.call([]) ; // [object Array]
Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
Object.prototype.toString.call(new Error()) ; // [object Error]
Object.prototype.toString.call(document) ; // [object HTMLDocument]
Object.prototype.toString.call(window) ; //[object global] window 是全局對象 global 的引用

 

(1)數據類型 ==》轉成 Boolean 類型函數

數據類型 轉換爲true的值 轉換爲false的值
Boolean true false
String  任何非空字符串 空字符串
Number 任何非零數字值(包括無窮大) 0和Null
Object 任何對象 null
Undefined   Undefined

 

(2)數據類型 ==》轉成 Number 類型性能

數據類型 轉換爲Number的值
Null 0
Undefined NaN
String  全數字’002‘ 忽略前導0的數字2
' ' 空字符串 0
其餘 NaN
Boolean true 1
false 0
Object 先查詢valueOf(), 而後使用toString()   

 

(3)數據類型 ==》轉成 String 類型this

使用 a.toString(),  或直接 String(a)

數據類型   轉換爲String的值
Boolean true 'true'
false 'false'
Number 0 '0'
Null null 'null'
Undefined undefined 'undefined'
Array 使用toString()方法  

 

(4)數據類型 ==> 轉成數組Array 

數據類型 方法
String  string的方法:split()

類數組的對象;

可遍歷的對象(Set,Map)

 

Array.from(a);

[...a]

(5)判斷是否爲真(在boolean上下文中轉換後的值爲真的值:truthy)

true !== Truthy

全部的值都是真值,除非被設置成false, '', null, NaN, 0, undefined

參考連接:https://developer.mozilla.org/zh-CN/docs/Glossary/Truthy

if([]) //Truthy
if({})
if(true)
if(42)
……

可是{}!=false/ true/ NaN / null / undefined / 0;

[ ] ==' '; [ ]==0; [ ]==false

 

一,字符串

二,數值

三,函數

(1)函數定義

//函數聲明
function sum(a,b){
    return a+b;
}

//函數表達式
var sum = function(a,b){
    return a+b;
}

//Function構造函數【這也是一個表達式,不建議使用,影響函數解析性能】、
var sum = new Function('a', 'b', 'return a+b')

(2)匿名函數與閉包

匿名函數:沒有名字的函數

閉包:有權訪問另外一個函數做用域內的變量的函數。常見方式就是在一個函數內建立另外一個函數。

閉包特色:
(1)返回函數中的變量的最後一個值(即return的值)
(2)閉包函數會一直留在內存中,直至銷燬
(3)可用於建立私有變量

(3)this對象

this對象是在運行時基於函數的執行環境所決定的。

全局函數:this等於window

當函數做爲某個對象的方法被調用的時候,this等於那個對象。

四,數組

五,對象

(1)js對象分類

參考:https://juejin.im/entry/58f85f87b123db006235e938

a,本地對象:獨立於宿主環境的 ECMAScript 實現提供的對象

Object,Function,Boolean,Symbol,Array,Number,Date,String,RegExp,Map,Set,WeakMap,WeakSet,Promise,Generator,Reflect,Proxy,Error

b,內置對象:獨立與宿主環境的全部對象,在ECMAScript程序開始執行時出現」。這意味着開發者沒必要明確實例化內置對象,它已經被實例化了。內置對象都是本地對象。

Global:在web瀏覽器中,將window對象做爲global對象使用

Math

c,宿主對象:宿主環境提供的對象

包括BOM對象和DOM對象

    • BOM 對象:window,location,navigator,screen,history
    • DOM 對象:Document,Body,Event,Form,Image,事件對象 event

d,自定義對象

就是開發人員本身定義的對象

六,面向對象

(1)繼承

a,基本原理:利用原型讓一個引用類型繼承另外一個引用類型的屬性和方法

b,構造函數,原型,實例的關係

參考連接: https://github.com/mqyqingfeng/Blog/issues/2

(1)prototype原型屬性
函數纔會有的屬性,prototype屬性是一個指針,指向一個叫原型的對象
(2)原型
每個js對象(除了null)在建立的時候就會有一個相關聯的對象,叫原型
(3)__proto__
每個js對象(除了null)都有的一個屬性,叫__proto__,這個屬性指向該對象的原型
(4)constructor構造器
每一個原型都有一個constructor屬性指向關聯的構造函數
function Person(){}
var person = new Person();   //下圖爲構造函數,原型,實例之間的關係

       

(c)原型鏈

上圖中造成了一個原型鏈,

person  -------(__proto__)-------Persion.prototype-------(__proto__)--------Object.prototype

(d)原型搜索機制

當以讀取模式訪問一個實例屬性時,

首先,在實例中搜索該屬性。(搜索person實例)若沒有找到 ↓↓

其次,繼續搜索該實例的原型(搜索Person.prototype),若沒有找到 ↓↓

最後,直到搜索到原型鏈末端(搜索Object.Prototype)

(e)肯定原型與實例之間的關係

//instanceof操做符
console.log(person instanceof Person); //true,即person是Persion的實例
console.log(Person instanceof Object);  //true

//isPrototypeOf()方法
console.log(Person.prototype.isPrototypeOf(person)); //true,即Person.prototype是person的原型
console.log(Object.prototype.isPrototypeOf(Person));  //true

 七,AJAX

相關文章
相關標籤/搜索