JS—this
- f(); 程序员自己调用一个函数 一个普通函数 函数中的this表示window
let box = document.getElementById("box");
function f() {
console.log(this); // window
}
box.onclick = f();
- 点击盒子调用g函数;不需要点击直接调用了第一个this
let box = document.getElementById("box");
function f(){
console.log(this); // window
return function g(){
console.log(this); // 事件源
}
}
box.onclick = f();
- window打点调用函数,函数中的this表window
function k() {
console.log(this); // window
}
window.k(); // window打点调用
k(); // 程序员自己调用
- 通过对象打点去调用一个方法,此时里面的this表示当前这个对象。
一个方法中的this是谁,就看点前面是谁。
JS中的对象是属性的无序集合
属性:变量/方法
无序:容器中的属性没有顺序
集合:存放了N个数据
var wc = {
name:"wangcai", // 叫属性 var name = "wangcai"
age:100, // 叫属性
eat:function () { // 叫方法(属性)
console.log("eat...")
console.log(this);
}
}
wc.eat(); // 调用一个对象上的方法
- this是谁必须等调用了才能知道
function f() {
console.log(this);
}
function f() {
console.log(this.name);
}
let box = document.getElementById("box");
box.name = "mybox";
var name = "mywindow";
var obj = {
name:"myobj",
f:f
}
f(); // mywindow
box.onclick = f; // 点击得到mybox
obj.f(); // myobj
box.onmousedown = function () {
f(); // 普通函数调用
}
————
var num = 10; // VO --》 num也变成了65
var obj = {
num:20, // num:30
}
obj.fn = (function (num) {
// EC num:20 --》 21 --》 22 --》 23
this.num = num*3; // window.num = 60 --》65
num++; //
console.log(num)
return function (n) {
// EC n:5
// EC n:10
this.num += n; //
num++;
console.log(num) // 22 23
}
})(obj.num)
var fn = obj.fn;
fn(5);
obj.fn(10);
console.log(num,obj.num)
console.log(window.num)
- 想要使用obj里的a,需要写成this.a
(function () {
var a = 1;
var obj = {
a:10, // 要使用这个a 必须是obj.a
f:function () {
a *= 2;
}
}
obj.f();
alert(obj.a+a)
})();
- 普通的函数调用
var name = "window";
var Wangcai = {
name:"Wangcai",
show:function () {
console.log(this.name)
},
f:function () {
var fun = this.show;
fun(); // 普通函数调用
}
}
Wangcai.f();
- // 谁用了getFullName 看.前面是谁
// .前面是obj.prop 说明getFullName中的this是obj.prop
// 问:obj.prop中有没有fullname;
答:访问一个对象上不存在的属性 得到und
var fullname = "language";
var obj = {
fullname:"javascript",
prop:{
getFullName:function () {
return this.fullname;
}
}
}
console.log(obj.prop.getFullName()); // undefined
- 类型错误,t是一个字符串
- 代表obj
- 代表window
https://m.php.cn/article/407815.html
【js事件里面的this代表什么?详解js中this的用法(附使用例子)-js教程-PHP中文网】