webveuje/zuoye/js/thislx.md
2021-06-03 10:52:41 +08:00

5.3 KiB
Raw Blame History

this练习

document.write的题目 需要写出在页面上打印的结果

  1. 下面代码的执行结果是什么 为什么

    var person = {
         firstName: "John",
         lastName : "Doe",
         id     : 5566,
         fullName : function() {
             return this.firstName + " " + this.lastName;
         }
     };
    
     // 显示对象的数据
     document.getElementById("demo").innerHTML = person.fullName();
    
    
  2. 下面代码的执行结果是什么 为什么

    var x = this;
     document.getElementById("demo").innerHTML = x;
    
    
  3. 下面代码的执行结果是什么 为什么

    "use strict";
    var x = this;
     document.getElementById("demo").innerHTML = x;
    
    
  4. 下面代码的执行结果是什么 为什么

    document.getElementById("demo").innerHTML = myFunction();
     function myFunction() {
     return this;
     }
    
    
  5. 下面代码的执行结果是什么 为什么

    "use strict";
    document.getElementById("demo").innerHTML = myFunction();
    function myFunction() {
    return this;
    }
    
    
  6. 下面代码的执行结果是什么 为什么

         <body>
    
         <h2>JavaScript <b>this</b> 关键字</h2>
    
         <button onclick="this.style.display='none'">点我后我就消失了</button>
    
         </body>
    
    
  7. 下面代码执行结果是什么 为什么

  var person = {
      firstName  : "John",
      lastName   : "Doe",
      id     : 5566,
      myFunction : function() {
          return this;
      }
  };

  // 显示表单数据
  document.getElementById("demo").innerHTML = person.myFunction();

  1. 把第7题的对象中的属性和方法挨个打印在页面上
  2. 下面代码的执行结果是什么 为什么
    var person = {
    firstName: "John",
    lastName : "Doe",
    id     : 5566,
    fullName : function() {
        return this.firstName + " " + this.lastName;
    }
    };

    // 显示对象的数据
    document.getElementById("demo").innerHTML = person.fullName();

  1. 下面代码的执行结果是什么 为什么
var person1 = {
  fullName: function() {
    return this.firstName + " " + this.lastName;
  }
}
var person2 = {
  firstName:"John",
  lastName: "Doe",
}
person1.fullName.call(person2);

  1. 下面代码的执行结果是什么 为什么
function speak(){
    var name = this.name
    console.log(`Hello I am ${name}`)
}
var me = {
    name: 'a',
    speak: speak
}
var you = {
    name: 'b',
    speak: speak
}
me.speak() 
you.speak() 

  1. 下面代码的执行结果是什么 为什么
function fn(){
    console.log(this.name)
}
fn.name = 'xxx'
fn()  

  1. 下面代码的执行结果是什么 为什么
    function foo() { 
        var a = 2;
        this.bar(); 
    }
    function bar() { 
        console.log( this.a );
    }
    foo();

  1. 下面代码的执行结果是什么 为什么
    function foo(){
        console.log(this.a)
    }
    var a = 2
    foo()

  1. 下面代码的执行结果是什么 为什么
function foo() { 
    console.log( this.a );
}
var obj = { 
    a: 2,
    foo: foo
};
obj.foo();

  1. 下面的fn中的this指向谁
    obj1.obj2.obj3.fn() 
  1. 下面代码的执行结果是什么 为什么
function foo() { 
    console.log( this.a );
}
var obj = { 
    a: 2,
    foo: foo 
};
var bar = obj.foo; // 函数别名!
var a = "xxxxx"
bar(); 

  1. 下面代码的执行结果是什么 为什么
function foo() { 
    console.log( this.a );
}
var obj = { 
    a: 2,
    foo: foo 
};
var a = "xxxxx"
setTimeout( obj.foo ,100);

  1. 下面代码的执行结果是什么 为什么
function foo(something) { 
    console.log( this.a, something ); 
    return this.a + something;
}
function bind(fn, obj) {
    return function() {
        return fn.apply( obj, arguments );
    }; 
}
var obj = { 
    a:2
};
var bar = bind( foo, obj );
var b = bar( 3 ); // 2 3 
console.log( b );


  1. 下面代码的执行结果是什么 为什么
const test = {
  prop: 42,
  func: function() {
    return this.prop;
  },
};

console.log(test.func());

  1. 下面代码的执行结果是什么 为什么
console.log(this === window); 

a = 37;
console.log(window.a); 

this.b = "MND";
console.log(window.b) 
console.log(b)

  1. 下面代码的执行结果是什么 为什么
function f1(){
  return this;
}
//在浏览器中:
f1() === window;   //在浏览器中全局对象是window

//在Node中
f1() === globalThis;


  1. 下面代码的执行结果是什么 为什么
function f2(){
  "use strict"; // 这里是严格模式
  return this;
}

f2() === undefined; 

  1. 下面代码的执行结果是什么 为什么
var obj = {a: 'Custom'};
var a = 'Global';

function whatsThis() {
  return this.a;  
}

whatsThis();         
whatsThis.call(obj); 
whatsThis.apply(obj);

  1. 下面代码的执行结果是什么 为什么
function C(){
  this.a = 37;
}

var o = new C();
console.log(o.a); 


function C2(){
  this.a = 37;
  return {a:38};
}

o = new C2();
console.log(o.a);

  1. 下面代码的执行结果是什么 为什么
<button onclick="alert(this.tagName.toLowerCase());">
  Show this
</button>