function identify() {
return this.name.toUpperCase();
}
function sayHello() {
var greeting = "Hello, I'm " + identify.call( this );//不太理解这一步是把this绑定到sayHello函数中嘛?
console.log( greeting );
}
function identify() {
return this.name.toUpperCase();
}
function sayHello() {
var greeting = "Hello, I'm " + identify.call( this );//不太理解这一步是把this绑定到sayHello函数中嘛?
console.log( greeting );
}
identify.call( this );
是把当前的上下文环境this传给identify函数,至于你这个this指向哪里,没运行无法判断,
如果你是直接运行函数
sayHello();
那this指向window环境
如果你是用new 调用
var obj = new sayHello();
那这个this指向obj对象
首先,不是,是将this绑定到identify函数上,然后identify函数再对this处理,但这个this到底是什么要看你如何调用函数sayHello了,比如
function identify() {
return this.name.toUpperCase();
}
function sayHello() {
var greeting = "Hello, I'm " + identify.call( this );
console.log( greeting );
}
var obj = { name : "hybg" , sayHello : sayHello };
obj.sayHello(); // Hello, I'm HYBG
window.name = "window";
sayHello(); //Hello, I'm WINDOW
第一种的this指向obj ( 隐式绑定 ),第二种指向window ( 默认绑定 ),
this指向什么,完全取决于 什么地方以什么方式调用,而不是 创建时this在哪。
更多的绑定方式和源码解析,可以戳这里js this绑定,如果是不清楚call,apply的工作原理刚刚的链接也详细介绍了。( 逃
8 回答4.5k 阅读✓ 已解决
6 回答3k 阅读✓ 已解决
5 回答2.6k 阅读✓ 已解决
5 回答6.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答2.4k 阅读
4 回答2.7k 阅读✓ 已解决
不是呀,是把sayHello内的this绑定给identify。
例如