Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
javascriptÖеÄһЩºËÐÄ֪ʶµãÒÔ¼°ÐèҪעÒâµÄµØ·½
 
×÷ÕߣºÒ¶Ð¡îÎ À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ 2015-03-10
  1880  次浏览      28
 

ǰÑÔ

½üÆÚÔÓÊÂÉõ¶à£¬ÕâЩÊÂÇéµÄ»ýÀÛ¶Ô֪ʶÌåϵµÄÌáÉýÓкô¦£¬µ«ÊÇÈ´²»ÄÜÕûÀí³öÀ´£¬Ò²ÕûÀí²»³öÀ´

±ÈÈç˵ÎÒ×î½üÑо¿µÄHybridÔÚÏßÁªµ÷·½°¸±ã¹ýÓÚÒÀÀµÓÚÒµÎñ£¬¾ÍËã·ÖÏíÒ²²»»áÓÐÈ˶Á¶®£¬ÈôÊdzéÒ»µãÀ´·ÖÏíÓÖÒâÒå²»´ó

ÓÖÄÃ×î½ü×öwebapp view ת³¡¶¯»­Ñо¿£¬¾ÍÊǼ¸¸ödemo²»¶Ï²âÊÔ£¬¸Ð¾õûÓÐʲô¿É˵µÄ

×îºóÉõÖÁ¶ÔwebappÖеÄHistoryµÄ´¦Àí·½°¸Ò²ÊÇÓÐһЩÐĵã¬Ò»µã·½°¸£¬µ«ÊÇÒÀ¾ÉÄÑÒÔÕûÀí³ÉÎÄ£¬ÓÚÊDZ㿪ʼÎÄ»ÄÁË

Õâ¸öʱºò²»·Á±ãιÊ֪аɣ¬¶ÔjavascriptµÄһЩÀÏ֪ʶµã½øÐÐÕûÀí»Ø¹Ë£¬Ö®ºóÓдó¶¯×÷ÔÙ˵°É£¡

ÎÄÖÐ֪ʶ½öÊǸöÈË»ýÀÛ×ܽᣬÓÐÎóÇëÖ¸³ö

±Õ°ü

×÷ÓÃÓòÁ´

±Õ°üÊÇjavascriptÖÐÒ»¸öÖØÒªÖªÊ¶µã£¬Ò²ÊÇjavascriptÖÐÒ»¿éħ·¨£¬ÎÒÃÇÔÚ²»ÊìϤËûµÄÇé¿öÏ¿ÉÄܱ㾭³£Ê¹ÓÃÁË£¬ÊìϤËûÁ˽âËûÊÇ´Ó³õ¼¶ÖÁÖм¶µÄÒ»¸ö±êÖ¾

ÒªÕæÕýÁ˽â±Õ°ü£¬¾ÍµÃ´Ó×÷ÓÃÓòÁ´ËµÆð

javascriptÖУ¬×÷ÓÃÓòÁ´µÄ×÷ÓÃÊÇ¿ØÖƱäÁ¿µÄ·ÃÎÊ˳Ðò£¬½ö´Ë¶øÒÑ

Ê×ÏÈ£¬javascriptÔÚÔËÐÐʱÐèÒªÒ»¸ö»·¾³£¬Õâ¸ö»·¾³±ãÊÇÎÒÃÇËùνִÐÐÉÏÏÂÎÄ£¨execution context£©

Ö´ÐÐÉÏÏÂÎľö¶¨Á˱äÁ¿»òÕߺ¯ÊýÓÐȨÀû·ÃÎÊÆäËüÊý¾Ý£¬Ã¿¸öÖ´Ðл·¾³¶¼ÓÐÒ»¸öÓëÖ®¹ØÁªµÄ±äÁ¿¶ÔÏó£¬ÓÃÓÚ´æ´¢Ö´ÐÐÉÏÏÂÎÄÖж¨ÒåµÄ±äÁ¿»òÕߺ¯Êý

Ò»°ãÇé¿öÏÂÎÒÃÇËù´¦µÄÈ«¾ÖÖ´ÐÐÉÏÏÂÎıãÊÇwindow¶ÔÏó£¬ËùÒÔÈ«¾Ö·¶Î§ÄÚ´´½¨µÄËùÓжÔÏóÈ«²¿ÊÇwindowµÄÊôÐÔ»òÕß·½·¨

º¯ÊýµÄ±äÁ¿¶ÔÏóÒ»°ãÊÇÆä»î¶¯¶ÔÏó£¨activation Object£©

Æä´Î£¬javascriptûÓп鼶×÷ÓÃÓòµÄ¸ÅÄµ«ÊÇÿ¸öº¯ÊýÓÐ×Ô¼ºµÄÖ´ÐÐÉÏÏÂÎÄ£¬Õâ¸ö±ãÊDZäÏàµÄ¿é¼¶×÷ÓÃÓò

ÿִÐÐÒ»¸öº¯Êýʱ£¬º¯ÊýµÄÖ´ÐÐÉÏÏÂÎÄ»á±»ÍÆÈëÒ»¸öÉÏÏÂÎÄÕ»ÖУ¬º¯ÊýÈôÖ´ÐнáÊø£¬Õâ¸öÉÏÏÂÎÄÕ»±ã»á±»µ¯³ö£¬¿ØÖÆÈ¨±ä»ØÖ®Ç°µÄÖ´ÐÐÉÏÏÂÎÄ

µ±´úÂëÔÚÖ´ÐÐÉÏÏÂÎÄÖÐÖ´ÐÐʱ£¬±ä»Ø´´½¨Ò»¸ö×÷ÓÃÓòÁ´£¬Õâ¸ö×÷ÓÃÓòÁ´¿ØÖÆ×ÅÖ´ÐÐÉÏÏÂÎÄÊý¾Ý·ÃÎÊ˳Ðò

function test() {
var a = 2;
console.log(a);
}
var a = 1;
test();

ÔÚÕâÀï±ã¾ßÓÐÁ½¸öÖ´ÐÐÉÏÏÂÎÄ£¬Ò»¸öÊÇwindow£¬Ò»¸öÊÇtestº¯Êý

Ê×ÏÈ£¬ÔÚtestÖ´ÐÐ֮ǰ£¬ÎÒÃÇÈ«¾ÖÖ´ÐÐÉÏÏÂÎÄÒѾ­´æÔÚ£¬Ëû±ãÊÇwindow£¬Õâ¸öʱºòÎÒÃÇ»áÓÐaÓëtestÔÚ×÷ÓÃÓò×îǰ¶Ë

Ö´ÐÐtestʱºò£¬ÐγÉtestÖ´ÐÐÉÏÏÂÎÄ£¬ÓÚÊÇ×îǰ¶ËµÄÖ´ÐÐÉÏÏÂÎıä³ÉÁËtest£¬Õâ¸öʱºò»áÏÈÐγɻ¶ÔÏ󣬰üÀ¨argumentsÒÔ¼°a

ÔÚconsole.logʱ£¬»á·ÃÎÊ×÷ÓÃÓòÁ´×î½üµÄa±äÁ¿£¬Ò²¾ÍÊÇ2£¬Õâ¸öÊÇ´òÓ¡³ö2µÄ¸ù±¾Ô­Òò£¬ÈôÊÇûÓÐ×÷ÓÃÓòÁ´Õâ¸ö˳Ðò¾Í»µÁË

ÏÂÃæÊÇtestÖ´ÐÐʱºòµÄͼʾ£º

ËùÒÔ×÷ÓÃÓòÁ´Ïà¹ØµÄ֪ʶµãÊÇ£º

¢Ù ¿ØÖƱäÁ¿·ÃÎÊ˳Ðò

¢Ú Ö´ÐÐÉÏÏÂÎİüº¬Ò»¸ö×÷ÓÃÓòÁ´µÄÖ¸Õë

¢Û ¸Ã²ãº¯ÊýÍⲿÓм¸¸öº¯Êý£¬±ã»áÓм¸¸ö»î¶¯¶ÔÏó´ý´¦Àí£¬×÷ÓÃÓòÁ´Ö¸Õë»áÖ¸ÏòÆäÍⲿ»î¶¯¶ÔÏó

¢Ü ×÷ÓÃÓòÁ´ÎªÖ´ÐÐÉÏÏÂÎÄʱº¯ÊýÄÚ²¿ÊôÐÔ£¬²»ÒªÍýÏëÈ¥²Ù×÷

±Õ°üµÄÐγÉ

±Õ°üµÄÐγɱãÊÇÒ»¸öº¯ÊýÖ´ÐÐÉÏÏÂÎÄÖÐÓÐÒ»¸ö±äÁ¿±»ÆäÄÚ²¿º¯ÊýʹÓÃÁË£¬²¢ÇÒÕâ¸öÄÚ²¿º¯Êý±»·µ»ØÁË£¬±ãÐγÉÁËÒ»¸ö±Õ°ü

ÓÉÓÚº¯Êýµ÷Óúó£¬ÍⲿÁÙʱ±äÁ¿±£´æ×ÅÄÚ²¿µÄÒýÓã¬Ö´ÐÐʱ»áÐγÉÄÚ²¿ÉÏÏÂÎÄ»·¾³£¬ÄÚ²¿µÄº¯Êý»á°üº¬ÍⲿµÄ×÷ÓÃÓòÁ´Ö¸ÏòµÄ±äÁ¿¶ÔÏó£¬

Õâ¸öʱºò¾ÍËãÍⲿִÐл·¾³ÏûºÄ£¬ÓÉÓÚÍⲿ±£´æ×ÅÍⲿº¯ÊýµÄ»î¶¯¶ÔÏóµÄÒýÓã¬ËùÒÔÕâ¸ö±äÁ¿¶ÔÏ󲻻ᱻÏûºÄ£¬Õâ¸öÊDZհü²úÉúµÄÔ­Òò

function test() {
var a = 2;
return function () {
console.log(a);
};
}
var b = test();
b();

ÕâÀï»áÐγÉÈý¸öÖ´Ðл·¾³£¬Ò»¸öÊÇÈ«¾ÖµÄ£¬Ò»¸öÊÇtestµÄ£¬Ò»¸öÊÇÄäÃûº¯Êý£¨×îÖÕÊÇbº¯Êý£©µÄ£¬ÎÒÃÇÒÀ¾É´ÓtestÖ´ÐÐʱ˵Æð

µ±testº¯ÊýÖ´ÐÐʱ£º

var b = test();

»áÐγÉÒ»¸öÖ´ÐÐÉÏÏÂÎÄ£¬Ö´ÐÐÉÏÏÂÎİüº¬Ò»¸ö×÷ÓÃÓòÁ´Ö¸Õ룬²¢ÇÒ»áÐγÉÒ»¸ö»î¶¯¶ÔÏó

ÕâÀïtestµÄ×÷ÓÃÓòÁ´Ö»ÊÇÒ»¸öÖ¸Õ룬ËûÖ»ÊÇÒýÓÃÕâ¸ö»î¶¯¶ÔÏó£¬Ö´ÐнáÊøºóÖ´ÐÐÉÏÏÂÎĻᱻÊÍ·Å£¬×÷ÓÃÓòÁ´Ò²»áÏûʧ£¬µ«ÊÇÆä»î¶¯¶ÔÏóδ±Ø»áGC

ÔÚbÖ´ÐÐʱ£¬ÆäÄäÃûº¯ÊýµÄ×÷ÓÃÓòÁ´±ãÖ¸ÏòÁËÍⲿº¯ÊýµÄ»î¶¯¶ÔÏ󣬲»ÒªÎÊËûÔõô»ñµÃÕâ¸öÖ¸ÕëÒýÓõģ¬Ëû¾ÍÊÇÖªµÀ£¬ÓÚÊÇtestµÄ»î¶¯¶ÔÏó½«Ò»Ö±±»±£´æ£¬Ö±µ½bµ÷ÓýáÊø

ÕâÀïbÖ´ÐеĹØÏµÊÇ£º

¾­µäÀý×Ó

¹ØÓÚ±Õ°üÓÐÒ»¸ö¾­µäµÄÀý×Ó£¬Ëû±ãÊÇforÑ­»·µÄÀý×Ó£º

function createFn() {
var ret = [], i;
for (i = 0; i < 10; i++) {
ret[i] = function () {
return i;
};
}
return ret;
}
var fns = createFn();

Õâ¶Î´úÂë·Ç³£¼òµ¥£¬¸ù¾ÝÒ»¸öÊý×éÐγÉ10¸öº¯Êý£¬Ã¿¸öº¯Êý·µ»ØÆäË÷ÒýÖµ£¬ÕâÀàÓ¦ÓÃÔÚʵ¼Ê¹¤×÷Öлᾭ³£Óõ½£¬Ö»²»¹ýÎÒÃÇÐèÒªµÄÊÇÆäË÷Òý¶ÔÓ¦µÄÊý¾Ý£¬¶ø²»ÊǼòµ¥µÄË÷ÒýÁË

ÕâÀà»ácreateFnÖ´ÐÐʱ»áÓÐÁ½¸öÖ´Ðл·¾³£¬Ò»¸öÊÇ×Ô¼ºµÄ£¬Ò»¸öÊÇwindowsµÄ£¬ÄÚ²¿Ö´Ðл·¾³×÷ÓÃÓòÁ´»áÖ¸ÏòÒ»¸ö»î¶¯¶ÔÏó

µ±È»fnsÊý×éÖÐÈÎÒâÒ»¸öº¯ÊýÖ´ÐÐʱ£¬Æä»áʹÓõ½createFnµÄ»î¶¯¶ÔÏóÖеÄÊý¾Ýi£¬¶ø¸Ã»î¶¯¶ÔÏóÊDZ»10¸öº¯Êý¹²Óõ쬶¼ÊÇ10£¬ËùÒÔÓëÔ¤ÆÚ²»ºÏ

¸ÃÎÊÌâµÄ´¦Àí±ãÊǸ÷×ÔÐγÉ×Ô¼ºµÄ±Õ°ü£º

function createFn() {
var ret = [], i;
for (i = 0; i < 10; i++) {
ret[i] = (function (i) {
return function () {
return i;
};
})(i);
}
return ret;
}
var fns = createFn();

ÕâÀïÑ­»·ÖлáÐγÉ10¸ö¶ÀÁ¢µÄÖ´ÐÐÉÏÏÂÎÄ£¬ÆäÖеÄ10¸ö»î¶¯¶ÔÏóµÄarguments¶¼±£´æÁËÍⲿiµÄ¶ÀÁ¢Êý¾Ý£¬¶øÄÚ²¿ÓÖÐγÉÒ»¸ö±Õ°ü·ÃÎÊÁ¢¼´Ö´Ðк¯ÊýµÄÊý¾Ý£¬ËùÒÔÊý¾ÝÕýÈ·ÁË......

ÆäËü±Õ°ü

requireJSÖеıհü

±ê×¼µÄrequireJSÀ´Ëµ¶¼ÊÇÒ»¸öAMDµÄÄ£¿é£¬±ÈÈ磺

define(function () {
var add = function (x, y) {
return x + y;
};
return {
add: add
};
});

ÎÒÃÇÖªµÀ£¬requireJSÿһ´Î¼ÓÔØÆäÄ£¿é½Ô»á±»Ö´ÐÐÒ»´Î£¬²¢ÇÒÖ»»áÖ´ÐÐÒ»´Î£¬Õâ¸öÄ£¿é»á±»requireJSËù±£´æ£¬ËùÒÔÕâ¸öÄäÃûº¯Êý»î¶¯¶ÔÏóÊDz»»á±»Êͷŵģ¬ÇÒÊÇΨһµÄ

Õâ¸öʱºòÎÒÃǺܶà×é¼þ±ã¿ÉÒÔͳһʹÓÃÆä¹¦Äܼ´¿É£¬±ÈÈçÉú³ÉuuidʲôµÄ......µ±È»£¬ÕâÖÖ²»ÊͷŵÄÎÊÌ⣬Ҳ»áµ¼ÖÂheapÖµµÄÌáÉý£¬Õâ¸öÊDz»ÊÇÓÐÎÊÌâ±ãÐèÒª¸÷λȥÑéÖ¤ÁË

webappÖеıհü

webappÒ»°ã»áʹÓÃrequireJS¹ÜÀíÄ£¿é£¬¶øÄÚ²¿ÓÖ»áÐγÉÐí¶àviewµÄʵÀý£¬Õâ¸öʵÀý²¢Çһᱣ´æÏÂÀ´£¬ÕâÑùÒ²»áµ¼ÖºܶຯÊýµÄ»î¶¯¶ÔÏóµÃ²»µ½ÊÍ·Å

Ò»À´¶þÍùÖ®¼ä£¬heapÖµ»á±È´«Í³ÍøÕ¾¸ß£¬Õâ¸öÊÇwebappÒ»¿é±È½ÏÍ·Ì۵ĵط½£¬ÐèÒªÂýÂýÓÅ»¯

Ô­ÐÍÁ´

×î³õjavascriptûÓÐclassµÄ¸ÅÄÎÒÃÇʹÓõÄÀàÊÇÒÔfunctionÄ£Ä⣬¼Ì³ÐµÄʵÏÖÊÖ¶ÎÒ»°ãÒÀ¿¿Ô­ÐÍÁ´£¬¼Ì³ÐµÄʹÓÃÒ²ÊÇÆÀ¼ÛÒ»¸öjserµÄÖØÒªÖ¸±ê

ÿ¸öº¯Êý¶¼»á°üº¬Ò»¸öÔ­ÐͶÔÏóprototype

Ô­ÐͶÔÏóprototype°üº¬Ò»¸öÖ¸Ïò¹¹Ô캯ÊýµÄÖ¸Õëconstructor

ʵÀý¶ÔÏó°üº¬Ò»¸öÄÚ²¿ÊôÐÔ__proto__Ö¸ÕëÖ¸ÏòÔ­ÐͶÔÏóprototype

ÕâÊÇËûÃÇÖ®¼äµÄÈý½Ç¹ØÏµ£º

(function () {
    var Person = function (name) {
        this.name = name;
    };
    //Person.prototype = {};//Õâ¾ä½«Ó°ÏìÊ®·Ö¾ßÓÐconstructorÊôÐÔ
    Person.prototype.getName = function () {
        return this.name;
    };

    var Student = function (name, sex, id) {
        this.name = name || 'ÎÞÃûÊÏ';
        this.sex = sex || '²»Ã÷';
        this.id = id || 'δÌî'; //ѧºÅ
    };
    //Ï൱ÓÚ½«Æäprototype¸´ÖÆÁËÒ»´Î£¬ÈôÊǰüº¬constructorµÄ»°½«Ö¸ÏòPerson
    Student.prototype = new Person();
    Student.prototype.getId = function () {
        return this.id;
    }
    var y = new Person();
    var s = new Student;
    var s1 = y instanceof Person;
    var s2 = s instanceof Student;
    var s3 = s instanceof Person;
    var s4 = Student.prototype.constructor === Person;
    var s5 = Student.constructor === Person;
    var s6 = Student.constructor === Function;

    var s = '';
})();

Ò»°ãÐÎʽµÄ¼Ì³Ð·½Ê½ÈçÉÏ£¬Å¼¶ûÎÒÃÇ»áÕâÑù¸É£º

Student.prototype = {}

µ«ÊÇÕâÑù»áµ¼ÖÂprototype¶ÔÏóµÄconstructor¶ÔÏó¶ªÊ§£¬ËùÒÔÐèÒªÕÒ»ØÀ´£¬ÁíÍâÒ»¸öÎÊÌâÊÇ£¬ÕâÀï¼Ì³ÐÐèÒªÖ´Ðи¸ÀàµÄ¹¹Ôì·½·¨£¬ÕâÑùÊÇÓÐÎÊÌâµÄ

±ÈÈ磬¸¸ÀàµÄ¹¹Ô캯ÊýÖÐÓÐһЩʼþ°ó¶¨Ê²Ã´µÄÓë×ÓÀàÎ޹أ¬±ã»áµ¼Ö¸ÃÀà¼Ì³ÐÎÞÓã¬ËùÒԺܶàʱºòÎÒÃÇÐèÒª×Ô¼ºÊµÏּ̳У¬±È½ÏÓÅÑŵÄÊÇprototypeµÄ×ö·¨£¬ÎÒÕâÀï¶ÔÆä½øÐÐÁËÒ»¶¨¸ÄÔì¡£

var arr = [];
var slice = arr.slice;

function create() {
  if (arguments.length == 0 || arguments.length > 2) throw '²ÎÊý´íÎó';

  var parent = null;
  //½«²ÎÊýת»»ÎªÊý×é
  var properties = slice.call(arguments);

  //Èç¹ûµÚÒ»¸ö²ÎÊýΪÀࣨfunction£©£¬ÄÇô¾Í½«Ö®È¡³ö
  if (typeof properties[0] === 'function')
    parent = properties.shift();
  properties = properties[0];

  function klass() {
    this.initialize.apply(this, arguments);
  }

  klass.superclass = parent;
  klass.subclasses = [];

  if (parent) {
    var subclass = function () { };
    subclass.prototype = parent.prototype;
    klass.prototype = new subclass;
    parent.subclasses.push(klass);
  }

  var ancestor = klass.superclass && klass.superclass.prototype;
  for (var k in properties) {
    var value = properties[k];

    //Âú×ãÌõ¼þ¾ÍÖØÐ´
    if (ancestor && typeof value == 'function') {
      var argslist = /^\s*function\s*\(([^\(\)]*?)\)\s*?\{/i.exec(value.toString())[1].replace(/\s/i, '').split(',');
      //Ö»ÓÐÔÚµÚÒ»¸ö²ÎÊýΪ$superÇé¿öϲÅÐèÒª´¦Àí£¨ÊÇ·ñ¾ßÓÐÖØ¸´·½·¨ÐèÒªÓû§×Ô¼º¾ö¶¨£©
      if (argslist[0] === '$super' && ancestor[k]) {
        value = (function (methodName, fn) {
          return function () {
            var scope = this;
            var args = [function () {
              return ancestor[methodName].apply(scope, arguments);
            } ];
            return fn.apply(this, args.concat(slice.call(arguments)));
          };
        })(k, value);
      }
    }

    klass.prototype[k] = value;
  }

  if (!klass.prototype.initialize)
    klass.prototype.initialize = function () { };

  klass.prototype.constructor = klass;

  return klass;
}

Ê×ÏÈ£¬¼Ì³ÐʱʹÓÃÒ»¸ö¿Õ¹¹Ô캯ÊýʵÏÖ£¬ÕâÑù²»»áÖ´ÐÐÔ­¹¹Ô캯ÊýµÄʵÀý·½·¨£¬Ôٹ淶»¯±ØÐëʵÏÖinitialize·½·¨£¬±£Áô¹¹Ô캯ÊýµÄÈë¿Ú£¬ÕâÀàʵÏֱȽÏÓÅÑÅ£¬½¨Òé¸÷λÊÔÊÔ

javascriptÖеÄDOMʼþ

ʼþÁ÷

PS£ºjavascriptµÄʼþÒ»¿éÎÒ˵µÄ¹»¶àÁË£¬ÕâÀïÔÙ˵һ´Î°É......

javascript×¢²ádomʼþµÄÊֶκࣺܶ

¢Ù Ö±½ÓдÔÚdom±êÇ©ÉÏ£¬onclickµÄ×ö·¨

¢Ú ÔÚjsÖÐÕâÑùд£ºel.onclick = function

ÉÏÊö×ö·¨ÊÂʵÉÏÊDz»ºÃµÄ£¬ÒòΪËûÃÇÎÞ·¨¶à´Î¶¨Ò壬ҲÎÞ·¨×¢Ïú£¬¸ü¼Ó²»ÓÃ˵ʹÓÃʼþίÍлúÖÆÁË

ÉÏÊöÁ½ÖÖ×ö·¨µÄ×îÖÕÈÔÈ»Êǵ÷ÓÃaddEventListener·½Ê½½øÐÐ×¢²áðÅݼ¶±ðµÄʼþ£¬ÓÚÊÇÕâÀïÓÖ³¶µ½ÁËjavascriptʼþµÄ¼¸¸ö½×¶Î

ÔÚDOM2¼¶Ê¼þ¶¨ÒåÖй涨ʼþ°üÀ¨Èý¸ö½×¶Î£¬Õâ¸öÊÇÏÖÓÐDOMʼþµÄ»ù´¡£¬Õâ¸öÒ»µ©¸Ä±ä£¬Ç°¶ËDOMʼþ±ãÐèÒªÖØ×é

Èý¸ö½×¶ÎÊÇʼþʼþ²¶»ñ½×¶Î¡¢´¦ÓÚÄ¿±ê½×¶Î¡¢Ã°Åݽ׶Î

ʼþ²¶»ñÓÉ×îÏȽÓÊÕµ½Ê¼þµÄÔªËØÍù×îÀïÃæ´«

ʼþðÅÝÓÉ×î¾ßÌåÔªËØÍùÉÏ´«ÖÁdocument

Ò»°ã¶øÑÔÊÇÏȲ¶»ñºóðÅÝ£¬µ«ÊÇ´¦Óڽ׶εÄʼþÖ´ÐÐÖ»Óë×¢²á˳ÐòÓйأ¬±ÈÈ磺

ÿ´Îµã»÷Ò»¸öDOMʱºòÎÒÃÇ»áÏÈÅжÏÊÇ·ñ´¦ÓÚʼþ½×¶Î£¬ÈôÊǵ½ÁË´¦Óڽ׶εϰ±ã²»´æÔÚ²¶»ñ½×¶ÎÁË

Ö±½Ó°´ÕÕÕâ¸öDOMµÄʼþ×¢²á˳ÐòÖ´ÐУ¬È»ºóÖ±½Ó½øÈëðÅݽ׶ÎÂß¼­£¬ÆäÅжϵÄÒÀ¾ÉÊÇe.targetÓëe.currentTargetÊÇ·ñÏàµÈ

Õâ¸öÉæ¼°µ½Ò»¸öä¯ÀÀÆ÷ÄÚ½¨Ê¼þ¶ÔÏó£¬ÎÒÃÇ×¢²áʼþ·½Ê½¶àÖÖ¶àÑù

³ýÁËaddEventListener¿ÉÒÔ×¢²á²¶»ñ½×¶ÎʼþÍ⣬ÆäÓ෽ʽ½ÔÊÇ×îºóµ÷ÓÃaddEventListener½Ó¿Ú×¢²áðÅݼ¶±ðʼþ

×¢²áµÄʼþ¶ÓÁлá¸ù¾ÝDOMÊ÷Ëù´¦Î»ÖýøÐÐÅÅÁУ¬×îÏȵÄÊÇbody£¬µ½×î¾ßÌåµÄÔªËØ

ÿ´ÎÎÒÃǵã»÷Ò³ÃæÒ»¸öÇøÓò±ã»áÏÈ×öÅжϣ¬ÊÇ·ñ´¦ÓÚµ±Ç°½×¶Î£¬±ÈÈ磺

ÎÒµ±Ç°¾ÍÊǵã»÷µÄÊÇÒ»¸ödiv£¬Èç¹ûe.target==e.currentTarget£¬Õâ¸öʱºò±ã»á°´×¢²á˳ÐòÖ´ÐÐÆäʼþ£¬²»»áÀí»áʼþÊDz¶»ñ»¹ÊÇðÅÝ£¬¶øÌø¹ý²¶»ñÁ÷³Ì£¬½áÊøºó»áÖ´ÐÐðÅݼ¶±ðµÄʼþ£¬ÈôÊÇbodyÉÏÓÐðÅݵã»÷ʼþ£¨Ã»Óв¶»ñ£©Ò²»á´¥·¢£¬ÒÔÉϱãÊÇDOMʼþÏà¹ØÖªÊ¶µã

ʼþðÅÝÊÇʼþίÍÐʵÏֵĻùʯ£¬ÎÒÃÇÔÚÒ³ÃæµÄÿ´Îµã»÷×îÖÕ¶¼»áðÅݵ½Æä¸¸ÔªËØ£¬ËùÒÔÎÒÃÇÔÚdocument´¦¿ÉÒÔ²¶×½µ½ËùÓеÄʼþ£¬Ê¼þίÍÐʵÏֵĺËÐÄ֪ʶµãÊǽâ¾öÒÔÏÂÎÊÌ⣺

¢Ù ÎÒÃÇʼþÊǰ󶨵½documentÉÏÃæ£¬ÄÇôÎÒÔõô֪µÀÎÒÏÖÔÚÊǵã»÷µÄÊ²Ã´ÔªËØÄØ

¢Ú ¾ÍËãÎÒÄܸù¾Ýe.target»ñÈ¡µ±Ç°µã»÷ÔªËØ£¬µ«ÊÇÎÒÔõô֪µÀÊÇÄĸöÔªËØ¾ßÓÐʼþÄØ

¢Û ¾ÍËãÎÒÄܸù¾ÝselectorÈ·¶¨µ±Ç°µã»÷µÄÄĸöÔªËØÐèÒªÖ´ÐÐʼþ£¬µ«ÊÇÎÒÔõôÕҵõ½ÊÇÄĸöʼþÄØ

Èç¹ûÄܽâ¾öÒÔÉÏÎÊÌâµÄ»°£¬ÎÒÃǺóÃæµÄÁ÷³Ì¾Í±È½Ï¼òµ¥ÁË

È·¶¨µ±Ç°ÔªËØÊ¹Óà e.target¼´¿É£¬ËùÒÔÎÒÃÇÎÊÌâÒÔ½â¾ö£¬Æä´Î±ã¸ù¾Ý¸Ã½ÚµãËÑË÷Æä¸¸½Úµã¼´¿É£¬·¢ÏÖ¸¸½ÚµãÓë´«ÈëµÄÑ¡ÔñÆ÷ÓйرãÖ´ÐÐʼþ»Øµ÷¼´¿É

ÕâÀﻹÐèÒªÖØÐÂe.currentTarget£¬²»ÖØÐ´È«²¿»á°ó¶¨ÖÁdocument£¬¼òµ¥ÊµÏÖ£º

var arr = [];
var slice = arr.slice;
var extend = function (src, obj) {
  var o = {};
  for (var k in src) {
    o[k] = src[k];
  }
  for (var k in obj) {
    o[k] = obj[k];
  }
  return o;
};

function delegate(selector, type, fn) {
  var callback = fn;

  var handler = function (e) {
    //Ñ¡ÔñÆ÷ÕÒµ½µÄÔªËØ
    var selectorEl = document.querySelector(selector);
    //µ±Ç°µã»÷ÔªËØ
    var el = e.target;
    //È·¶¨Ñ¡ÔñÆ÷ÕÒµ½µÄÔªËØÊÇ·ñ°üº¬µ±Ç°µã»÷ÔªËØ£¬Èç¹û°üº¬¾ÍÓ¦¸Ã´¥·¢Ê¼þ
    /*************
    ×¢Ò⣬´Ë´¦Ö»ÊǼòµ¥ÊµÏÖ£¬Êµ¼ÊÓ¦ÓûáÓÐÐí¶àÅжÏ
    *************/
    if (selectorEl.contains(el)) {
      var evt = extend(e, { currentTarget: selectorEl });
      evt = [evt].concat(slice.call(arguments, 1));
      callback.apply(selectorEl, evt);
      var s = '';
    }
    var s = '';
  };

  document.addEventListener(type, handler, false);
}

ʼþίÍÐÓÉÓÚÈ«²¿Ê¼þÊǰ󶨵½documentÉϵģ¬ËùÒԻᵼÖÂ×èֹðÅÝʧЧ£¬ºÜ¶à³õѧµÄͬѧ²»ÖªµÀ£¬ÕâÀïҪעÒâ

ʼþÄ£Äâ

ʼþÄ£ÄâÊÇdomʼþµÄÒ»Öָ߼¶Ó¦Óã¬Ò»°ãÇé¿öÏÂÓò»µ½£¬µ«ÊÇһЩ¼«¶ËÇé¿öÏÂËûÊǽâ¾öʵ¼ÊÎÊÌâµÄɱÊÖïµ

ʼþÄ£ÄâÊÇjavascriptʼþ»úÖÆÖÐÏ൱ÓÐÓõŦÄÜ£¬Àí½âʼþÄ£ÄâÓëÉÆÓÃʼþÄ£ÄâÊÇÅбðÒ»¸öǰ¶ËµÄÖØÒªÒÀ¾Ý£¬ËùÒÔ¸÷λһ¶¨ÒªÉîÈëÀí½â

ʼþÒ»°ãÊÇÓÉÓû§²Ù×÷´¥·¢£¬ÆäʵjavascriptÒ²ÊÇ¿ÉÒÔ´¥·¢µÄ£¬±È½ÏÖØÒªµÄÊÇ£¬javascriptÄ£ÄâµÄ´¥·¢×ñѭʼþÁ÷»úÖÆ£¡£¡£¡

Òâ˼¾ÍÊÇ£¬javascript´¥·¢µÄʼþÓëä¯ÀÀÆ÷±¾Éí´¥·¢ÆäʵÊÇÒ»ÑùµÄ£¬¼òµ¥Ä£Äâʼþµã»÷£º

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
#p { width: 300px; height: 300px; padding: 10px; border: 1px solid black; }
#c { width: 100px; height: 100px; border: 1px solid red; }
</style>
</head>
<body>
<div id="p">
parent
<div id="c">
child
</div>
</div>
<script type="text/javascript">
alert = function (msg) {
console.log(msg);
}

var p = document.getElementById('p'),
c = document.getElementById('c');
c.addEventListener('click', function (e) {
console.log(e);
alert('×ӽڵ㲶»ñ')
}, true);
c.addEventListener('click', function (e) {
console.log(e);
alert('×Ó½ÚµãðÅÝ')
}, false);

p.addEventListener('click', function (e) {
console.log(e);
alert('¸¸½Úµã²¶»ñ')
}, true);

p.addEventListener('click', function (e) {
console.log(e);
alert('¸¸½ÚµãðÅÝ')
}, false);

document.addEventListener('keydown', function (e) {
if (e.keyCode == '32') {
var type = 'click'; //Òª´¥·¢µÄʼþÀàÐÍ
var bubbles = true; //ʼþÊÇ·ñ¿ÉÒÔðÅÝ
var cancelable = true; //ʼþÊÇ·ñ¿ÉÒÔ×èÖ¹ä¯ÀÀÆ÷ĬÈÏʼþ
var view = document.defaultView; //Óëʼþ¹ØÁªµÄÊÓͼ£¬¸ÃÊôÐÔĬÈϼ´¿É£¬²»¹Ü
var detail = 0;
var screenX = 0;
var screenY = 0;
var clientX = 0;
var clientY = 0;
var ctrlKey = false; //ÊÇ·ñ°´ÏÂctrl
var altKey = false; //ÊÇ·ñ°´ÏÂalt
var shiftKey = false;
var metaKey = false;
var button = 0; //±íʾ°´ÏÂÄÄÒ»¸öÊó±ê¼ü
var relatedTarget = 0; //Ä£Äâmousemove»òÕßoutʱºòÓõ½£¬ÓëʼþÏà¹ØµÄ¶ÔÏó
var event = document.createEvent('Events');
event.myFlag = 'ҶСîÎ';
event.initEvent(type, bubbles, cancelable, view, detail, screenX, screenY, clientX, clientY,
ctrlKey, altKey, shiftKey, metaKey, button, relatedTarget);

console.log(event);
c.dispatchEvent(event);
}
}, false);
</script>
</body>
</html>

Ä£Äâµã»÷ʼþÊǽâ¾öÒÆ¶¯¶Ëµã»÷ÏìÓ¦µÄ»ùʯ£¬ÓÐÐËȤµÄͬѧ×Ô¼ºÈ¥Ñо¿Ï°ɣ¬ÎÒÕâÀï²»¶à˵

ÑÓʱִÐÐ

ÑÓʱִÐÐsettimeoutÊÇjavascriptÖеÄÒ»µÀÀûÆ÷£¬ºÜ¶àʱºòÒ»µ©½â¾ö²»ÁËÎÒÃDZã»áʹÓÃsettimeout£¬µ«ÊǶÔsettimeoutµÄÀí½âÉÏ£¬ºÜ¶à³õѧµÄÅóÓÑÓÐÒ»¶¨ÎóÇø

³õѧµÄÅóÓÑÒ»°ãÈÏΪsettimeoutÊÇÔÚ¶àÉÙºÁÃëºó±ã»á±»Ö´ÐУ¬ÊÂʵÉÏÆäºóÃæµÄÊý¾Ý´ú±íµÄÊÇÒ»¸öʱ¼äƬ£¬»òÕß˵ÊÇÓÅÏȼ¶£¬settimeoutµÄ»Øµ÷»áÔÚÖ÷¸É³ÌÐòÖ®ºóÖ´ÐÐ

±ÈÈ磺

var a = 0, b = 1;
setInterval(function () {
a = 1;
}, 0)
while (1) {
//...
b++;
if(a == 1)
break;
}

ÒÔÏ´úÂë»áµ¼ÖÂä¯ÀÀÆ÷¼ÙËÀ£¬ÒòΪsettimeoutÖеĴúÂëÓÀÔ¶²»»áÖ´ÐÐ

settimeoutÕæÕýµÄµÄÓ÷¨ÊÇ£º

¢Ù ÑÓʱÇëÇ󣬼õÉÙ²»±ØÒªµÄÇëÇó

¢Ú ÐèÒª¹ý¶àµÄ²Ù×÷dom½á¹¹Ê±£¬ÎªÁ˱հüä¯ÀÀÆ÷¼ÙËÀ£¬¿ÉÒÔʹÓÃsettimeout

ÁíÍ⣬zeptoÖÐÓÐÒ»¶ÎÓësettimeoutÓйصijÜÈè´úÂ룬ÔÚÄ£Äâtapʼþʱºò£¬zeptoʹÓÃdomÄ£ÄâclickʼþµÄ·½Ê½ÊµÏÖÁË£º

.on('touchend MSPointerUp pointerup', function(e){
  if((_isPointerType = isPointerEventType(e, 'up')) &&
    !isPrimaryTouch(e)) return
  cancelLongTap()

  // swipe
  if ((touch.x2 && Math.abs(touch.x1 - touch.x2) > 30) ||
      (touch.y2 && Math.abs(touch.y1 - touch.y2) > 30))

    swipeTimeout = setTimeout(function() {
      touch.el.trigger('swipe')
      touch.el.trigger('swipe' + (swipeDirection(touch.x1, touch.x2, touch.y1, touch.y2)))
      touch = {}
    }, 0)

  // normal tap
  else if ('last' in touch)
    if (deltaX < 30 && deltaY < 30) {
      tapTimeout = setTimeout(function() {

        var event = $.Event('tap')
        event.cancelTouch = cancelAll
        touch.el.trigger(event)

        if (touch.isDoubleTap) {
          if (touch.el) touch.el.trigger('doubleTap')
          touch = {}
        }
        else {
          touchTimeout = setTimeout(function(){
            touchTimeout = null
            if (touch.el) touch.el.trigger('singleTap')
            touch = {}
          }, 250)
        }
      }, 0)
    } else {
      touch = {}
    }
    deltaX = deltaY = 0
})

±È½Ï¹·ÑªµÄÊÇ£¬ËûÔÚtapÕâÀïʹÓÃÁËsettimeout£¬µ¼ÖÂÁËÒ»¸öÑÓʱ£¬Õâ¸öÑÓʱЧ¹ûÖ±½ÓµÄÓ°Ïì±ãÊÇÆäevent²ÎÊýʧЧ

Ò²¾ÍÊÇÕâÀtouchendʱºò´«ÈëµÄevent²ÎÊý²»»á±»tapʼþÓõ½£¬Ê²Ã´e.preventDefaultÖ®ÀàµÄ²Ù×÷±ãÓÚtapÎÞ¹ØÁË£¬´ËÀàʵÏÖÖÁ½ñδ¸Ä

ÆäËü

localstorage

localstorageµÄʹÓÃÔÚÎÒ³§webappµÄÓ¦ÓÃÖУ¬´ïµ½ÁËÒ»¸öǰËùδÓеĸ߶ȣ¬ÎÒÃǾªÆæµÄ·¢ÏÖ£¬ÆäÕæÊµÈÝÁ¿ÊÇ£º

localstorage µÄ×î´óÏÞÖÆ°´×Ö·ûÊýÀ´Ë㣬ÖÐÓ¢ÎͼÊÇ×î¶à500¶àÍò¸ö×Ö·û£¬webkitΪ5242880¸ö

ÓÚÊǺܶàʱºò£¬localstorageµÄÀÄÓñã»áÒý·¢localstorage´æ´¢Ê§Ð§£¬µ¼ÖÂÒµÎñ´íÎó

²¢ÇÒlocalstorageµÄÀÄÓû¹±íÏÖÔÚ´æ´¢ÒµÎñ¹Ø¼üÐÅÏ¢µ¼ÖÂurl¶ÔÍâ²»¿ÉÓõÄÇé¿ö£¬ËùÒÔʹÓÃlocalstorageµÄÅóÓÑÒªÉ÷ÖØ£¡

ÆäËü

......

½áÓï

½ñÌìÎÒÃÇ»¨ÁËÒ»µãʱ¼ä»Ø¹ËÁËһЩjavascriptµÄºËÐÄ֪ʶµã£¬Ï£Íû¶Ô¸÷λÓÐÓã¬ÎÒÕâÀïÏȳ·ÍËÁË£¬ÎÄÖÐÀí½âÓÐÎóÇëÌá³ö

   
1880 ´Îä¯ÀÀ       28

</script>

Ïà¹ØÎÄÕ Ïà¹ØÎĵµ Ïà¹Ø¿Î³Ì



Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

AndroidÊÖ»ú¿ª·¢£¨Ò»£©
Àí½âJavascript
·ÇµäÐÍajaxʵ¼ù
³¹µ×µÄAjax
javascript ʹÓÃCookies
ʹÓà jQuery ¼ò»¯ Ajax ¿ª·¢


Struts+Spring+Hibernate
»ùÓÚJ2EEµÄWeb 2.0Ó¦Óÿª·¢
J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Java EE 5ÆóÒµ¼¶¼Ü¹¹Éè¼Æ
Javaµ¥Ôª²âÊÔ·½·¨Óë¼¼Êõ
Java±à³Ì·½·¨Óë¼¼Êõ


ijº½¿Õ¹«Ë¾IT²¿ JavaScriptʵ¼ù
ijµçÊÓÈí¼þ HTML5ºÍJavaScript
Öк½ÐÅ JavaScript¸ß¼¶Ó¦Óÿª·¢
´óÇìÓÍÌï web½çÃæAjax¿ª·¢¼¼Êõ
ºÍÀûʱ ʹÓÃAJAX½øÐÐWEBÓ¦Óÿª·¢