修改函数的this指向一共有三种方法
1.(call方法)除了第一个参数以外还可以添加多个参数
var obj = {
name: name,
say: function (arr, str) {
console.log(this.name + arr + str);
}
}
obj.say.call({ name: "李四" }, "50", 18)
2.apply方法,也可以有多个参数,但是不同的是,第二个参数必须是一个数组,如下:
var obj = {
name: name,
say: function (arr, str) {
console.log(this.name + arr + str);
}
}
obj.say.apply({ name: "王吴" }, ["80",100])
3.bind方法跟call方法语法类型单是注意结尾要加小括号
var obj = {
name: name,
say: function (arr, str) {
console.log(this.name + arr + str);
}
}
obj.say.bind({ name: "小李" }, "100",90)()
new操作符的使用
new操作符可以帮助我们创建不同类型的对象,比如new Date, new Array等等...
讨论一下我们经常使用的构造函数new操作符的作用以及原理
function a(name, age, gender) {
this.name = name,
this.age = age,
this.gender = gender
}
var p2 = new a("小王", 19, "男孩")
console.log(p2);
这里我们通过new操作符创建了一个新的对象
通过new操作符链接到函数的原型对象
将构建函数中的this绑定到新建的对象obj上
根据构建函数返回类型作判断,如果是原始值则被忽略,如果是返回对象,需要正常处理