this指的是call的第一个参数
<!DOCTYPE html>
<html>
<head>
<script src="//code.jquery.com/jquery-2.1.1.min.js"></script>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<button id=xxx>click me 1</button>
<button id=xxx2>click me 2</button>
<ul>
<li id=1></li>
<li id=2></li>
<li id=3></li>
<li id=4></li>
<li id=5></li>
<li id=6></li>
</ul>
</body>
</html>
下面的this指的是什么?
xxx.onclick = function () {
console.log(this);
}
xxx2.addEventListener('click', function () {
console.log(this);
})
$('ul').on('click', 'li', function() {
console.log(this);
})
function X() {
return object = {
name: 'object',
f1(x) {
x.f2()
},
f2() {
}
}
}
var options = {
name: 'options',
f1() {
},
f2() {
console.log(this);
}
}
var x = X();
x.f1(options); // ?
小变种
function X() {
return object = {
name: 'object',
f1(x) {
x.f2.call(this)
},
f2() {
console.log(this)
}
}
}
var options = {
name: 'options',
f1() {
},
f2() {
console.log(this);
}
}
var x = X();
x.f1(options); // ?
function X() {
return object = {
name: 'object',
options: null,
f1(x) {
this,options = x;
this.f2();
},
f2() {
this.options.f2.call(this); // 加上call和不加有什么区别
}
}
}
var options = {
name: 'options',
f1() {
},
f2() {
console.log(this);
}
}
var x = X();
x.f1(options); // ?
网友评论