var arr = [];
arr[0] = 0;
arr[1] = 1;
arr.foo = 'c';
console.log(arr.length)
運行結果爲2,當時我想會報錯,結果錯了,數組的實例本身也是一個對象,可不要忘記typeof ary
的結果可是object
的,arr.length可以認爲是arr的屬性,那麼同理,arr.foo也可以認爲是給arr添加了一個屬性foo,這個屬性的值爲’c’
var obj = {};
obj.log = console.log;
obj.log.call(console, this); //window對象
在這個題目中就算把,console換成obj,null等,結果都是widow對象,因爲調用call中傳遞的this本身就是window
1 == true //true
undefined==null //true
undefined值是派生自null值的,undefined === null爲false
屬於ajax事件??
$.post(url)是ajax請求;
ajax的事件是:
ajaxComplete(callback)
ajaxError(callback)
ajaxSend(callback)
ajaxStart(callback)
ajaxStop(callback)
ajaxSuccess(callback)
輸出的結果是??
var a, b;
(function() {
alert(a);
alert(b);
var a = b= 3;
alert(a);
alert(b);
})();
alert(a);
alert(b);
第一次輸出的a是局部a,爲undefined,輸出的b爲全局b,爲undefined
第二次輸出的a是局部a,已經賦值爲3,輸出的b爲全局b,爲3
第三次輸出的a、b都爲全局,則a是undefined,b爲3
執行結果??
var A = {n : 4399};
var B = function() { this.n = 9999; };
var C = function() {var n = 8888; }
B.prototype = A;
C.prototype = A;
var b = new B();
var c = new C();
A.n++;
console.log(b.n); //9999
console.log(c.n); //4400
首先B和C的原型對象變爲了A對象,也就是說B和C的實例的原型鏈上肯定是有n屬性的,對於b而言,執行了構造函數,所以這個實例自己是含有n的,所以輸出的是9999,原型鏈上向來是找到了就停止尋找了,對於C只能沿着原型鏈去尋找了,所以找到4400
在JS裏判斷一個對象oStringObject是否爲String??
console.log(typeof new String('aaa')); //'object'
在這種情況下typeof是不能作爲判斷的方法的,這個時候就需要instanceof
oStringObject instanceof String
運行結果??
var msg = 'hello';
for(var i = 0; i < 10; i++) {
var msg = 'hello' + i * 2 + i;
}
alert(msg); //hello189
for循環中的聲明會被忽略,因爲此時全局對象中已經聲明瞭a,所以for循環做的只是每次給msg賦予不同的值,最後輸出的是i = 9的計算結果,所以輸出hello189
console.log(([])?true:false); //true
console.log(([]==false?true:false)); //true
console.log(({}==false)?true:false) //false
Boolean([]); //true
Boolean({}); //true
Number([]); //0
Number({}); // NaN
Number(false); //0
“==”運算符比較**“喜歡”**Number類型(但是null == 0 與 undefined == 0的結果是false),所以前面三個輸出可以轉換爲
console.log(true ? true:false);
console.log((0 == 0) ? true : false);
console.log((NaN == 0 ? true : false));
輸出結果??
(function() {
var a = b = 5;
})();
console.log(b);
console.log(a);
5,Uncaught ReferenceError: a is not defined
a是沒有被聲明的,但是window.a爲undefined