Files
weblianxi/js1/this.md
2021-06-26 23:41:49 +08:00

115 lines
1.6 KiB
Markdown

# this
1. 总结this的指向的规律
2. 改变this指向的方式
3. 下面代码的执行结果为
```js
function fn2(){
console.log(this.n)
var n='n'
this.n=10
console.log(n)
}
var obj={fn2:fn2, n:1}
fn2()
obj.fn2()
console.log(obj.n, window.n)
```
4.下面代码的执行结果为
```js
function f(){console.log(this)}
var obj={
fn: (function(){
console.log(this.f)
// return this.f
})(),
f: function(){console.log(this)}
}
f()
obj.f()
```
5. 下面代码的执行结果为
```js
var n = 10
var obj1={
n:1,
f:function(){this.n++; n=this.n++}
}
obj1.f()
console.log(n)
console.log(obj1.n)
window.setTimeout(obj1.f, 1000)
```
6. 下面代码的执行结果为
```js
console.log(getA)
if('a' in window){
var a = ''
function getA(a){
a = a||this.a
console.log(this.a)
}
getA(a)
}
```
7. 下面代码执行结果为
```js
const obj1 = {
nickName: 'qianguyihao',
age: 28,
};
function fn1() {
console.log(this);
console.log(this.nickName);
}
fn1.call(this);
```
8. 下面代码的执行结果为
```js
var obj1 = {
nickName: 'qianguyihao',
age: 28,
};
function fn1(a, b) {
console.log(this);
console.log(this.nickName);
console.log(a + b);
}
fn1.call(obj1, 2, 4);
```
9.下面代码的执行结果为
```js
function Father(myName, myAge) {
this.name = myName;
this.age = myAge;
}
function Son(myName, myAge) {
Father.call(this, myName, myAge);
}
const son1 = new Son('hello', 28);
console.log(JSON.stringify(son1));
```
10.把上面7,8,9 改成apply语法
13.把上面7,8,9 改成bind语法