var prop = "Outer"; //全局作用域的name为Outer
var obj = {
prop: "Inner" //obj的name为Inner
};
function printProp(obj) { //打印对象的name属性的函数
console.log(obj["prop"]);
}
printProp.call(this,obj); //Inner
printProp.call(obj,this); //Outer
printProp.call(obj,obj); //Inner
printProp.call(this,this); //Outer
/*
* 第一行:在this作用域中,传入参数obj:在全局作用域中找到了obj对象,并输出了obj.prop。
* 第二行:在obj作用域中,传入对象this:在obj中没有找到this.prop,
* 于是顺着作用域链向上寻找,
* 找到了window.prop,也就是this.prop。
* 第三行:在obj作用域中,传入对象obj:直接找到了obj.prop。
* 第四行:同上。
*
*/
JavaScript——写代码时突然想出的小案例,用以理解作用域
最新推荐文章于 2024-07-18 10:10:43 发布