大家都知道js里皆對象,函數也不例外,函數也是對象,當然說對象就有對應的方法。
1.bind,bind(o)
傳入一個對象,返回一個函數,這個函數this的指向改變為傳入的對象
2.call
3.apply
call和apply相似,直接改變函數的this指向傳入的參數。
區別在于**傳參不同**
call(o,1,2,3)
apply(o,[1,2,3])
call安順序傳入參數,apply只接受2個參數,第一個對象 需要指向的,第二個是數組。
可以試試下面代碼會輸出什么:
~~~
window.name='全局的我'
var o = {
name:'局部的我'
}
function sayName(){
console.log(this.name)
}
sayName() //全局的我
o.sayName=sayName
o.sayName() //局部的我
o.sayName=sayName.bind(window)
o.sayName() //全局的我
o.sayName=sayName.call(o)
o.sayName=sayName.apply(o)
~~~
- 以專業工程師的標準要求自己
- JS
- 函數的this
- 函數的argument
- 函數的apply、bind、call方法
- 創建對象
- 構造函數創建對象
- 原型結合構造函數創建對象
- 原型
- 繼承
- 閉包
- 正則表達式
- Ajax
- 設計模式
- ES6
- es6的模塊化
- 定義變量的新方式
- 函數擴展
- 數組擴展
- 性能與工程化
- 關于http與緩存
- 重排(reflow、layout)與重繪
- 頁面性能
- gulp
- webpack
- 一些項目回顧總結
- 移動端&微信H5游戲
- 微信小程序
- Vue.js
- 隨手記錄
- 如何通過前端技能獲取2018世界杯門票
- jsonp
- es6 javascript對象方法Object.assign()
- 一份不錯的基礎面試題
- vscode常用插件
- koroFileHeader
- 構建自己的Js工具庫
- H5 game
- Phaser從入坑到放棄再入坑
- 1.游戲的創建
- 2.資源的加載
- 3.phaser中的舞臺,世界和攝像機
- 4.游戲縮放控制,移動端的適配
- 5.phaser中的顯示對象
- 1.概述
- 2.phaser中的圖片,圖形,和按鈕
- 3.phaser中的精靈
- 4.文字
- 5.組
- 6.phaser中的動畫
- 7.粒子和瓦片地圖
- 8.瓦片地圖
- lodash
- ES5 to ESNext?—?here’s every feature added to JavaScript since 2015
- 防抖(debounce) 和 節流(throttling)