-----------------------------------------------------------------
cc = function(){alert(345)},
pushStack = function() {
cc();
},
pushStack();//345
//沒加var的放在window對象中
pushStack = function() {
cc();
},
cc = function(){alert(345)},
pushStack();//345
----------------------------------------------------------------
pushStack = function() {
cc();//cc is not defined
};
pushStack();
cc = function(){alert(345)};
pushStack = function() {
cc();
};
pushStack();//345
function cc(){alert(345)};
----------------------------------------------------------------
cc = function(){alert(345)};
pushStack();//pushStack is not defined ,js解析器執行到這裡的時候pushStack還是未定義
pushStack = function() {
cc();
};
cc = function(){alert(345)};
pushStack();//345,js解析器執行到這裡的時候pushStack已經定義了
function pushStack() {
cc();
};
name = '2';
a = function(){
alert(this.name);
alert(888);
},
o = {
fn1 : function(){
a = function(){
//fn1執行的時候(fn1要執行,不執行是加不進去的)把a加到window裡面去,把外部的a方法覆寫了
alert(this.name);//2 window
alert(this);//2
alert(666);
};
a();//666 a.call(window)
window.a();//666
}
}
o.fn1();
window.a();// 2 666
name = '2';
a = function(){
alert(this.name);
alert(888);
},
o = {
fn1 : function(){
this.a = function(){//fn1執行,給o對象加了a方法
alert(this.name);
alert(this);
alert(666);
};
a(); //2 888 a.call(window) ,都是從window中找a()沒有就報錯
window.a(); //2 888
}
}
o.fn1();
window.a();// 2 888
o.a();//666
name = '2';
a = function(){
alert(this.name);
alert(888);
},
o = {
fn1 : function(){
var a = function(){ //fn1函數執行,就有2個a方法,一個在fn1局部作用域,一個在window
alert(this.name);
alert(this);
alert(666);
};
a(); //2 666 a.call(window),查找局部作用域的a方法
window.a(); // 2 888
}
}
o.fn1();
window.a();// 2 888
jQuery = function() {
alert(1);
return new jQuery.fn.init();
},
jQuery.fn = jQuery.prototype = {//fn是類的靜态屬性
//能夠調用jQuery原型裡(constructor()、pushStack())方法的隻能是jQuery對象或者init對象:$('div')。
constructor: jQuery,
init: function() {
},
//$('div').pushStack,this是$('div'),
pushStack: function() {
alert(2);
this.constructor();//1, this是init對象或者jQuery對象$('div'),傳回的是新的空init對象
constructor();//constructor.call(window),調不了報錯,
},
}
jQuery.fn.init.prototype = jQuery.fn;
var j = constructor();//window調用不了
$('div').pushStack();//1,2,1, $('div')是init對象可以調用pushStack()方法
o = {}
o.pushStack();//o.pushStack is not a function,能夠調用pushStack方法是jQuery的對象後者init對象,
new jQuery.fn.init().pushStack();//2 1