1. 程式人生 > >js面試相關

js面試相關

才會 lan log prototype cto urn blank 等於 isp

一,字符串

二,數值

三,函數

(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,內部對象

Array、Boolean、Date、Function、Global、Math、Number、Object、RegExp、String以及各種錯誤類對象,包括Error、EvalError、RangeError、ReferenceError、SyntaxError和TypeError

b,內置對象: 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

js面試相關