04 this——js

    技术2022-07-12  90

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script> /* 浏览器在调用函数时,每次都会向函数传递进一个隐含的参数 -这个隐含的参数就是this,this指向的是一个对象 -这个对象我们称为上下文对象 根据函数的调用方式的不同,this会指向不同的对象 -以函数的形式调用是,this永远都是window -以方法的形式调用时,this就是调用方法的那个对象 -当以构造函数的形式调用时,this就是新创建的对象 */ function fun(a,b){ console.log("a="+a+"\nb="+b); console.log(this); } console.log("一、以函数的形式调用是,this永远都是window,相当于window.fun(123,456)~"); fun(123,456);//以函数的形式调用是,this永远都是window,相当于window.fun(123,456) // 创建一个对象 var obj={ name:"孙悟空", sayname:fun }; console.log("二、obj.sayname==fun是否为真:~"); console.log(obj.sayname==fun); obj.sayname(147,258);//以方法的形式调用时,this就是调用方法的那个对象obj var obj2={ name:"猪八戒", sayname:fun }; obj2.sayname(789,456); // 以函数的形式调用是,this永远都是window,所以this.name调用的是“var name” console.log("三、以函数的形式调用是,this永远都是window,所以this.name调用的是“var name”~"); var name="全局的name属性"; function fun2(a,b){ console.log("a="+a+"\nb="+b); console.log(this.name); } fun2(456,456); console.log("四、this可以根据调用者的不同变成不同的值,从而改变“this.name2”的值:~"); var name2="全局"; function fun3(){ console.log(this.name2); } var obja={ name2:"孙悟空2", sayname:fun3 }; var objb={ name2:"沙和尚2", sayname:fun3 }; fun3(); obja.sayname(); objb.sayname(); </script> </head> <body> </body> </html>
    Processed: 0.009, SQL: 9