1.js中的this
没回答太好,只说了谁调用它就指向那个函数,还可以用apply,call去改变指针指向
在函数执行时,this 总是指向调用该函数的对象。 要判断 this 的指向,其实就是判断 this 所在的函数属于谁。 在《javaScript语言精粹》这本书中,把 this 出现的场景分为四类,简单的说就是: 1.有对象就指向调用对象 var a = { name : '周恩来', getName:function(){ console.log(this.name) } } a.getName(); // -->this指向a 2.没调用对象就指向全局对象 this.name = '周永康'; // ---> this指向全局对象 window 3.用new构造就指向新对象 function Do(){ this.name = '毛泽东'; } var laRou = new Do(); this指向laRou 假如没有使用关键字new去构造一个函数,而是直接调用Do(),那此时的this是指向全局window的 因此立即执行函数的this也是指向window的 4.通过 apply 或 call 或 bind 来改变 this 的所指。 var a = { name : '周恩来', getName:function(){ console.log(this.name) } } var b = { name:'林彪' }; a.getName.call(b) // ---> '林彪',this指向b
2.inline-block的兼容性
3.作用域链
作用域链主要是js语句执行时,按照什么样的顺序去查找变量。
var name = "毛泽东" ; var obj = {name:'周恩来'} function t(){ var name = "江青" function inner(){ var name="毛新宇" ; console.log(name); } inner(); } t(); // 当执行console.log(name)时,name变量的查找顺序是 inner-->t-->window with语句可以更改作用域链,比如把 console.log(name)换成 with(obj){ console.log(name) } name变量的作用域链就变成 with-->inner-->t--->window 也就说先从当前上下文环境跳转到with的参数对象,再回到正常的作用域链