å¨å¼åä¸ï¼æ们ç»å¸¸éè¦å¤ææ个对象æ¯å¦ä¸ºæ°ç»ç±»åï¼å¨Jsä¸æ£æµå¯¹è±¡ç±»åç常è§æ¹æ³é½æåªäºå¢ï¼
typeof æä½ç¬¦
对äºFunctionï¼ Stringï¼ Number ï¼Undefined çå ç§ç±»åç对象æ¥è¯´ï¼ä»å®å
¨å¯ä»¥èä»»ï¼ä½æ¯ä¸ºArrayæ¶
var arr=new Array("1","2","3","4","5");
alert(typeof(arr));
ä½ ä¼æ¶å°ä¸ä¸ªobject ççæ¡ï¼æç¹è®©äººå¤±æã
instanceof æä½ç¬¦
JavaScriptä¸instanceofè¿ç®ç¬¦ä¼è¿åä¸ä¸ª Boolean å¼ï¼æåºå¯¹è±¡æ¯å¦æ¯ç¹å®ç±»çä¸ä¸ªå®ä¾ã 使ç¨æ¹æ³ï¼result = object instanceof class,è¿æ¯ååçæ°ç»ï¼åæ¥ä¸æ¬¡ï¼å¯ï¼æåçè¿å trueã
var arrayStr=new Array("1","2","3","4","5");
alert(arrayStr instanceof Array);
å°æ»ç»ï¼çæ ·åæ们ä»å¤©è®¨è®ºçé®é¢å·²ç»å¾å°äºè§£çï¼ä½äºå®ä¸å¨å¤ä¸ªframeä¸ç©¿æ¢å°±ä¼äº§ç大é®é¢äºã
var iframe = document.createElement('iframe');
document.body.appendChild(iframe);
xArray = window.frames[window.frames.length-1].Array;
var arr = new xArray("1","2","3","4","5");//è¿ä¸ªåæ³IE大å¥ä¸æ¯ä¸æ¯æçï¼FFä¸ææ
alert(arr instanceof Array); // false
alert(arr.constructor === Array); // false
è¿åç»æ为两个Falseï¼è®©äººå¤§å¤±ææã
ECMA-262 åé
Object.prototype.toString( ) When the toString method is called, the following steps are taken:
Get the [[Class]] property of this object.
Compute a string value by concatenating the three strings â[object â, Result (1), and â]â.
Return Result (2)
ä¸é¢çè§èå®ä¹äºObject.prototype.toStringçè¡ä¸ºï¼é¦å
ï¼åå¾å¯¹è±¡çä¸ä¸ªå
é¨å±æ§[[Class]]ï¼ç¶åä¾æ®è¿ä¸ªå±æ§ï¼è¿åä¸ä¸ªç±»ä¼¼äº"[object Array]"çå符串ä½ä¸ºç»æï¼çè¿ECMAæ åçåºè¯¥é½ç¥éï¼[[]]ç¨æ¥è¡¨ç¤ºè¯è¨å
é¨ç¨å°çãå¤é¨ä¸å¯ç´æ¥è®¿é®çå±æ§ï¼ç§°ä¸ºâå
é¨å±æ§âï¼ãå©ç¨è¿ä¸ªæ¹æ³ï¼åé
åcallï¼æ们å¯ä»¥åå¾ä»»ä½å¯¹è±¡çå
é¨å±æ§[[Class]]ï¼ç¶åæç±»åæ£æµè½¬å为å符串æ¯è¾ï¼ä»¥è¾¾å°æ们çç®çãè¿æ¯å
æ¥ççå¨ECMAæ åä¸Arrayçæè¿°å§ã
ECMA-262 åé
new Array([ item0[, item1 [,â¦]]])
The [[Class]] property of the newly constructed object is set to âArrayâ.
äºæ¯å©ç¨è¿ç¹ï¼ç¬¬ä¸ç§æ¹æ³ç»åºäºã
function isArray(obj) {
return Object.prototype.toString.call(obj) === '[object Array]';
}
callæ¹åtoStringçthiså¼ç¨ä¸ºå¾
æ£æµç对象ï¼è¿åæ¤å¯¹è±¡çå符串表示ï¼ç¶å对æ¯æ¤å符串æ¯å¦æ¯'[object Array]'ï¼ä»¥å¤æå
¶æ¯å¦æ¯Arrayçå®ä¾ãä¹è®¸ä½ è¦é®äºï¼ä¸ºä»ä¹ä¸ç´æ¥o.toString()ï¼å¯ï¼è½ç¶Array继æ¿èªObjectï¼ä¹ä¼ætoStringæ¹æ³ï¼ä½æ¯è¿ä¸ªæ¹æ³æå¯è½ä¼è¢«æ¹åèè¾¾ä¸å°æ们çè¦æ±ï¼èObject.prototypeåæ¯èèçå±è¡ï¼å¾å°æ人æ¢å»ç¢°å®çï¼æ以è½ä¸å®ç¨åº¦ä¿è¯å
¶â纯æ´æ§âï¼ï¼
ä¸åé¢å 个æ¹æ¡ä¸åï¼è¿ä¸ªæ¹æ³å¾å¥½ç解å³äºè·¨frame对象æ建çé®é¢ï¼ç»è¿æµè¯ï¼å大æµè§å¨å
¼å®¹æ§ä¹å¾å¥½ï¼å¯ä»¥æ¾å¿ä½¿ç¨ãä¸ä¸ªå¥½æ¶æ¯æ¯ï¼å¾å¤æ¡æ¶ï¼æ¯å¦jQueryãBase2ççï¼é½è®¡ååé´æ¤æ¹æ³ä»¥å®ç°æäºç¹æ®çï¼æ¯å¦æ°ç»ãæ£å表达å¼ç对象çç±»åå¤å®ï¼ä¸ç¨æ们èªå·±åäºã
å¦å¤Ext3 ä¹å·²ç»æ¢æè¿æ ·çåæ³äº
isArray : function(v){
return toString.apply(v) === '[object Array]';
}
温馨提示:答案为网友推荐,仅供参考