大家都知道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)