Loading...
墨滴

2021/12/11  阅读:36  主题:雁栖湖

this 题目

Part1This 题目大汇总

第一题:

var foo = 123;
function print({
  this.foo = 234;
  console.log(this);
  console.log(foo);
}
print();

第二题:

"use strict";
var foo = 123;
function print({
  console.log('print this is 'this);
  console.log(window.foo)
  console.log(this.foo);
}
console.log('global this is 'this);
print();

第三题:

let a = 1;
const b = 2;
var c = 3;
function print({
  console.log(this.a);
  console.log(this.b);
  console.log(this.c);
}
print();
console.log(this.a);

第四题:

a = 1;
function foo({
  console.log(this.a);
}
const obj = {
  a10,
  bar() {
    foo();
  }
}
obj.bar();

第五题:

var a = 1
function outer({
  var a = 2
  function inner({
    console.log(this.a) // 1
  }
  inner()
}
outer()

第六题:

a = 1;
(function ({
  console.log(this);
  console.log(this.a)
}())
function bar({
  b = 2;
  (function ({
    console.log(this);
    console.log(this.b)
  }())
}
bar();

第七题:

var a = 1;
function foo({
  console.log(this.a);
}
var obj = { a2, foo }
foo();
obj.foo();

第八题:

var obj1 = {
  a1,
  obj2: {
    a2,
    foo() {
      console.log(this.a)
    }
  }
}
obj1.obj2.foo()

第九题:

a = 1
var obj = {
  a2,
  foo() {
    console.log(this.a)
  }
}
var foo = obj.foo;
obj.foo();
foo();

第十题:

var obj = {
  a1,
  foo() {
    console.log(this.a)
  }
};
var a = 2;
var foo = obj.foo;
var obj2 = { a3foo: obj.foo }

obj.foo();
foo();
obj2.foo();

第十一题:

function foo({
  console.log(this.a)
}
function doFoo(fn{
  console.log(this)
  fn()
}
var obj = { a1, foo }
var a = 2
doFoo(obj.foo)

第十二题:

function foo({
  console.log(this.a)
}
function doFoo(fn{
  console.log(this)
  fn()
}
var obj = { a1, foo }
var a = 2
var obj2 = { a3, doFoo }
obj2.doFoo(obj.foo)

第十三题:

var name = 'zcxiaobao';
function introduce({
  console.log('Hello,My name is 'this.name);
}
const Tom = {
  name'TOM',
  introducefunction ({
    setTimeout(function ({
      console.log(this)
      console.log('Hello, My name is 'this.name);
    })
  }
}
const Mary = {
  name'Mary',
  introduce
}
const Lisa = {
  name'Lisa',
  introduce
}

Tom.introduce();
setTimeout(Mary.introduce, 100);
setTimeout(function ({
  Lisa.introduce();
}, 200);

第十四题:

name = 'javascript';
let obj = {
  name'obj',
  A() {
    this.name += 'this';
    console.log(this.name)
  },
  B(f) {
    this.name += 'this';
    f();
  },
  C() {
    setTimeout(function ({
      console.log(this.name);
    }, 1000);
  }
}
let a = obj.A;
a();
obj.B(function ({
  console.log(this.name);
});
obj.C();
console.log(name);

第十五题:

function foo({
  console.log(this.a)
}
var obj = { a1 }
var a = 2

foo()
foo.call(obj)
foo.apply(obj)
foo.bind(obj)

第十六题:

var obj1 = {
  a1
}
var obj2 = {
  a2,
  barfunction ({
    console.log(this.a)
  },
  foofunction ({
    setTimeout(function ({
      console.log(this)
      console.log(this.a)
    }.call(obj1), 0)
  }
}
var a = 3
obj2.bar()
obj2.foo()

第十七题:

function foo({
  console.log(this.a)
}
var obj = { a1 }
var a = 2

foo()
foo.call(obj)
foo().call(obj)

第十八题:

function foo({
  console.log(this.a)
  return function ({
    console.log(this.a)
  }
}
var obj = { a1 }
var a = 2

foo()
foo.call(obj)
foo().call(obj)

第十九题:

function foo({
  console.log(this.a)
  return function ({
    console.log(this.a)
  }
}
var obj = { a1 }
var a = 2

foo()
foo.bind(obj)
foo().bind(obj)

第二十题:

function foo({
  console.log(this.a)
  return function ({
    console.log(this.a)
  }
}
var obj = { a1 }
var a = 2
foo.call(obj)()

第二十一题:

var obj = {
  a'obj',
  foofunction ({
    console.log('foo:'this.a)
    return function ({
      console.log('inner:'this.a)
    }
  }
}
var a = 'window'
var obj2 = { a'obj2' }

obj.foo()()
obj.foo.call(obj2)()
obj.foo().call(obj2)

第二十二题:

var obj = {
  a1,
  foofunction (b{
    b = b || this.a
    return function (c{
      console.log(this.a + b + c)
    }
  }
}
var a = 2
var obj2 = { a3 }

obj.foo(a).call(obj2, 1)
obj.foo.call(obj2)(1)

第二十三题:

function User(name, age{
  this.name = name;
  this.age = age;
}
var name = 'Tom';
var age = 18;

var zc = new User('zc'24);
console.log(zc.name)

第二十四题:

function User(name, age{
  this.name = name;
  this.age = age;
  this.introduce = function ({
    console.log(this.name)
  }
  this.howOld = function ({
    return function ({
      console.log(this.age)
    }
  }
}
var name = 'Tom';
var age = 18;
var zc = new User('zc'24)
zc.introduce()
zc.howOld()()

第二十五题:

name = 'tom'
const obj = {
  name'zc',
  intro() => {
    console.log('My name is ' + this.name)
  }
}
obj.intro()

第二十六题:

name = 'tom'
const obj = {
  name'zc',
  introfunction ({
    return () => {
      console.log('My name is ' + this.name)
    }
  },
  intro2function ({
    return function ({
      console.log('My name is ' + this.name)
    }
  }
}
obj.intro2()()
obj.intro()()

第二十七题:

name = 'window'
const obj1 = {
  name'obj1',
  introfunction ({
    console.log(this.name)
    return () => {
      console.log(this.name)
    }
  }
}
const obj2 = {
  name'obj2',
  intro() => {
    console.log(this.name)
    return function ({
      console.log(this.name)
    }
  }
}
const obj3 = {
  name'obj3',
  intro() => {
    console.log(this.name)
    return () => {
      console.log(this.name)
    }
  }
}

obj1.intro()()
obj2.intro()()
obj3.intro()()

第二十八题:

function User(name, age{
  this.name = name;
  this.age = age;
  this.intro = function ({
    console.log('My name is ' + this.name)
  };
  this.howOld = () => {
    console.log('My age is ' + this.age)
  }
}

var name = 'Tom', age = 18;
var zc = new User('zc'24);
zc.intro();
zc.howOld();

第二十九题:

var name = 'window'
var obj1 = {
  name'obj1',
  introfunction ({
    console.log(this.name)
    return () => {
      console.log(this.name)
    }
  },
  intro2() => {
    console.log(this.name)
    return function ({
      console.log(this.name)
    }
  }
}
var obj2 = {
  name'obj2'
}
obj1.intro.call(obj2)()
obj1.intro().call(obj2)
obj1.intro2.call(obj2)()
obj1.intro2().call(obj2)

第三十题:

var name = 'window'
var user1 = {
  name'user1',
  foo1function ({
    console.log(this.name)
  },
  foo2() => console.log(this.name),
  foo3function ({
    return function ({
      console.log(this.name)
    }
  },
  foo4function ({
    return () => {
      console.log(this.name)
    }
  }
}
var user2 = { name'user2' }

user1.foo1()
user1.foo1.call(user2)

user1.foo2()
user1.foo2.call(user2)

user1.foo3()()
user1.foo3.call(user2)()
user1.foo3().call(user2)

user1.foo4()()
user1.foo4.call(user2)()
user1.foo4().call(user2)

第三十一题:

var x = 10;
var foo = {
  x20,
  barfunction ({
    var x = 30;
    console.log(this.x)

  }
};
foo.bar();
(foo.bar)();
(foo.bar = foo.bar)();
(foo.bar, foo.bar)();

第三十二题:

var length = 10;
function fn({
  console.log(this.length);
}

var obj = {
  length5,
  methodfunction (fn{
    fn();
    arguments[0]();
  }
};

obj.method(fn, 1);

第三十三题:

var number = 5;
var obj = {
    number3,
    fn: (function ({
        var number;
        this.number *= 2;
        number = number * 2;
        number = 3;
        return function ({
            var num = this.number;
            this.number *= 2;
            console.log(num);
            number *= 3;
            console.log(number);
        }
    })()
}
var myFun = obj.fn;
myFun.call(null);
obj.fn();
console.log(window.number);

第三十四题:

var num = 10
var obj = { num20 }
obj.fn = (function (num{
  this.num = num * 3
  num++
  return function (n{
    this.num += n
    num++
    console.log(num)
  }
})(obj.num)
var fn = obj.fn
fn(5)
obj.fn(10)
console.log(num, obj.num)

2021/12/11  阅读:36  主题:雁栖湖

作者介绍