new原理
- 1.创建一个新对象
- 2.将构造函数的作用域赋给新对象(this指向新对象)
- 3.执行构造函数中的代码(为这个新对象添加属性)
- 4.返回新对象
javascript
// 基本语法
function Person() {
this.name = 'Jack'
}
var p = new Person()
console.log(p.name)
手写new
call & apply & bind原理介绍
call & apply & bind是挂在Function对象上的3个方法,调用这3个方法的必须是一个函数
javascript
// 基本语法
func.call(thisArg, param1, param2, ...) // 参数列出来
func.apply(thisArg, [param1, param2, ...]) // 参数数组
func.bind(thisArg, param1, param2, ...) // 不立即执行
几个使用场景
判断数据类型
javascriptObject.prototype.toString.call(obj)
类数组借用方法
javascriptvar arrayLike = { 0: 'java', 1: 'script', length: 2 } Array.prototype.push.call(arrayLike, 'jack', 'lily') console.log(typeof arrayLike) // object console.log(arrayLike) // {0: 'java', 1: 'script', 2: 'jack', 3: 'lily', length: 4}
获取数组最大/最小值
javascriptlet arr = [13,6,10,11,16] const max = Math.max.apply(Math, arr) const min = Math.min.apply(Math, arr) console.log(max) console.log(min )