ECMAScript ¶¨ÒåÀà»ò¶ÔÏó
ʹÓÃÔ¤¶¨Òå¶ÔÏóÖ»ÊÇÃæÏò¶ÔÏóÓïÑÔµÄÄÜÁ¦µÄÒ»²¿·Ö£¬ËüÕæÕýÇ¿´óÖ®´¦ÔÚÓÚÄܹ»´´½¨×Ô¼º×¨ÓõÄÀàºÍ¶ÔÏó¡£
ECMAScript ÓµÓкܶഴ½¨¶ÔÏó»òÀàµÄ·½·¨¡£
¹¤³§·½Ê½
ÔʼµÄ·½Ê½
ÒòΪ¶ÔÏóµÄÊôÐÔ¿ÉÒÔÔÚ¶ÔÏó´´½¨ºó¶¯Ì¬¶¨Ò壬ËùÓÐÐí¶à¿ª·¢Õß¶¼ÔÚ JavaScript ×î³õÒýÈëʱ±àдÀàËÆÏÂÃæµÄ´úÂ룺
var oCar = new Object; oCar.color = "blue"; oCar.doors = 4; oCar.mpg = 25; oCar.showColor = function() { alert(this.color); };
ÔÚÉÏÃæµÄ´úÂëÖУ¬´´½¨¶ÔÏó car¡£È»ºó¸øËüÉèÖü¸¸öÊôÐÔ£ºËüµÄÑÕÉ«ÊÇÀ¶É«£¬ÓÐËĸöÃÅ£¬Ã¿¼ÓÂØÓÍ¿ÉÒÔÅÜ 25 Ó¢Àï¡£×îºóÒ»¸öÊôÐÔʵ¼ÊÉÏÊÇÖ¸Ïòº¯ÊýµÄÖ¸Õ룬ÒâζןÃÊôÐÔÊǸö·½·¨¡£Ö´ÐÐÕâ¶Î´úÂëºó£¬¾Í¿ÉÒÔʹÓöÔÏó car¡£
²»¹ýÕâÀïÓÐÒ»¸öÎÊÌ⣬¾ÍÊÇ¿ÉÄÜÐèÒª´´½¨¶à¸ö car µÄʵÀý¡£
½â¾ö·½°¸£º¹¤³§·½Ê½
Òª½â¾ö¸ÃÎÊÌ⣬¿ª·¢Õß´´ÔìÁËÄÜ´´½¨²¢·µ»ØÌض¨ÀàÐ͵ĶÔÏóµÄ¹¤³§º¯Êý£¨factory function£©¡£
ÀýÈ磬º¯Êý createCar() ¿ÉÓÃÓÚ·â×°Ç°ÃæÁгöµÄ´´½¨ car ¶ÔÏóµÄ²Ù×÷£º
function createCar() { var oTempCar = new Object; oTempCar.color = "blue"; oTempCar.doors = 4; oTempCar.mpg = 25; oTempCar.showColor = function() { alert(this.color); }; return oTempCar; } var oCar1 = createCar(); var oCar2 = createCar();
ÔÚÕâÀµÚÒ»¸öÀý×ÓÖеÄËùÓдúÂë¶¼°üº¬ÔÚ createCar() º¯ÊýÖС£´ËÍ⣬»¹ÓÐÒ»ÐжîÍâµÄ´úÂ룬·µ»Ø car ¶ÔÏó£¨oTempCar£©×÷Ϊº¯ÊýÖµ¡£µ÷Óô˺¯Êý£¬½«´´½¨Ð¶ÔÏ󣬲¢¸³ÓèËüËùÓбØÒªµÄÊôÐÔ£¬¸´ÖƳöÒ»¸öÎÒÃÇÔÚÇ°ÃæËµÃ÷¹ýµÄ car ¶ÔÏó¡£Òò´Ë£¬Í¨¹ýÕâÖÖ·½·¨£¬ÎÒÃÇ¿ÉÒÔºÜÈÝÒ׵ش´½¨ car ¶ÔÏóµÄÁ½¸ö°æ±¾£¨oCar1 ºÍ oCar2£©£¬ËüÃǵÄÊôÐÔÍêȫһÑù¡£
Ϊº¯Êý´«µÝ²ÎÊý
ÎÒÃÇ»¹¿ÉÒÔÐÞ¸Ä createCar() º¯Êý£¬¸øËü´«µÝ¸÷¸öÊôÐÔµÄĬÈÏÖµ£¬¶ø²»ÊǼòµ¥µØ¸³ÓèÊôÐÔĬÈÏÖµ£º
function createCar(sColor,iDoors,iMpg) { var oTempCar = new Object; oTempCar.color = sColor; oTempCar.doors = iDoors; oTempCar.mpg = iMpg; oTempCar.showColor = function() { alert(this.color); }; return oTempCar; } var oCar1 = createCar("red",4,23); var oCar2 = createCar("blue",3,25); oCar1.showColor(); //Êä³ö "red" oCar2.showColor(); //Êä³ö "blue"
¸ø createCar() º¯Êý¼ÓÉϲÎÊý£¬¼´¿ÉΪҪ´´½¨µÄ car ¶ÔÏóµÄ color¡¢doors ºÍ mpg ÊôÐÔ¸³Öµ¡£ÕâʹÁ½¸ö¶ÔÏó¾ßÓÐÏàͬµÄÊôÐÔ£¬È´Óв»Í¬µÄÊôÐÔÖµ¡£
ÔÚ¹¤³§º¯ÊýÍⶨÒå¶ÔÏóµÄ·½·¨
ËäÈ» ECMAScript Ô½À´Ô½Õýʽ»¯£¬µ«´´½¨¶ÔÏóµÄ·½·¨È´±»ÖÃÖ®²»Àí£¬ÇÒÆä¹æ·¶»¯ÖÁ½ñ»¹ÔâÈË·´¶Ô¡£Ò»²¿·ÖÊÇÓïÒåÉϵÄÔÒò£¨Ëü¿´ÆðÀ´²»ÏñʹÓôøÓй¹Ô캯Êý new ÔËËã·ûÄÇôÕý¹æ£©£¬Ò»²¿·ÖÊǹ¦ÄÜÉϵÄÔÒò¡£¹¦ÄÜÔÒòÔÚÓÚÓÃÕâÖÖ·½Ê½±ØÐë´´½¨¶ÔÏóµÄ·½·¨¡£Ç°ÃæµÄÀý×ÓÖУ¬Ã¿´Îµ÷Óú¯Êý createCar()£¬¶¼Òª´´½¨Ðº¯Êý showColor()£¬Òâζ×Åÿ¸ö¶ÔÏó¶¼ÓÐ×Ô¼ºµÄ showColor() °æ±¾¡£¶øÊÂʵÉÏ£¬Ã¿¸ö¶ÔÏó¶¼¹²Ïíͬһ¸öº¯Êý¡£
ÓÐЩ¿ª·¢ÕßÔÚ¹¤³§º¯ÊýÍⶨÒå¶ÔÏóµÄ·½·¨£¬È»ºóͨ¹ýÊôÐÔÖ¸Ïò¸Ã·½·¨£¬´Ó¶ø±ÜÃâÕâ¸öÎÊÌ⣺
function showColor() { alert(this.color); }
function createCar(sColor,iDoors,iMpg) { var oTempCar = new Object; oTempCar.color = sColor; oTempCar.doors = iDoors; oTempCar.mpg = iMpg;oTempCar.showColor = showColor;
return oTempCar; } var oCar1 = createCar("red",4,23); var oCar2 = createCar("blue",3,25); oCar1.showColor(); //Êä³ö "red" oCar2.showColor(); //Êä³ö "blue"
ÔÚÉÏÃæÕâ¶ÎÖØÐ´µÄ´úÂëÖУ¬ÔÚº¯Êý createCar() ֮ǰ¶¨ÒåÁ˺¯Êý showColor()¡£ÔÚ createCar() ÄÚ²¿£¬¸³Óè¶ÔÏóÒ»¸öÖ¸ÏòÒѾ´æÔÚµÄ showColor() º¯ÊýµÄÖ¸Õë¡£´Ó¹¦ÄÜÉϽ²£¬ÕâÑù½â¾öÁËÖØ¸´´´½¨º¯Êý¶ÔÏóµÄÎÊÌ⣻µ«ÊÇ´ÓÓïÒåÉϽ²£¬¸Ãº¯Êý²»Ì«ÏñÊǶÔÏóµÄ·½·¨¡£
ËùÓÐÕâЩÎÊÌâ¶¼Òý·¢ÁË¿ª·¢Õß¶¨ÒåµÄ¹¹Ô캯ÊýµÄ³öÏÖ¡£
¹¹Ô캯Êý·½Ê½
´´½¨¹¹Ô캯Êý¾ÍÏñ´´½¨¹¤³§º¯ÊýÒ»ÑùÈÝÒס£µÚÒ»²½Ñ¡ÔñÀàÃû£¬¼´¹¹Ô캯ÊýµÄÃû×Ö¡£¸ù¾Ý¹ßÀý£¬Õâ¸öÃû×ÖµÄÊ××Öĸ´óд£¬ÒÔʹËüÓëÊ××Öĸͨ³£ÊÇСдµÄ±äÁ¿Ãû·Ö¿ª¡£³ýÁËÕâµã²»Í¬£¬¹¹Ô캯Êý¿´ÆðÀ´ºÜÏñ¹¤³§º¯Êý¡£Ç뿼ÂÇÏÂÃæµÄÀý×Ó£º
function Car(sColor,iDoors,iMpg) {this
.color = sColor;this
.doors = iDoors;this
.mpg = iMpg;this
.showColor = function() { alert(this.color); }; } var oCar1 =new
Car("red",4,23); var oCar2 =new
Car("blue",3,25);
ÏÂÃæÎªÄú½âÊÍÉÏÃæµÄ´úÂëÓ빤³§·½Ê½µÄ²î±ð¡£Ê×ÏÈÔÚ¹¹Ô캯ÊýÄÚûÓд´½¨¶ÔÏ󣬶øÊÇʹÓà this ¹Ø¼ü×Ö¡£Ê¹Óà new ÔËËã·û¹¹Ô캯Êýʱ£¬ÔÚÖ´ÐеÚÒ»ÐдúÂëǰÏÈ´´½¨Ò»¸ö¶ÔÏó£¬Ö»ÓÐÓà this ²ÅÄÜ·ÃÎʸöÔÏó¡£È»ºó¿ÉÒÔÖ±½Ó¸³Óè this ÊôÐÔ£¬Ä¬ÈÏÇé¿öÏÂÊǹ¹Ô캯ÊýµÄ·µ»ØÖµ£¨²»±ØÃ÷ȷʹÓà return ÔËËã·û£©¡£
ÏÖÔÚ£¬Óà new ÔËËã·ûºÍÀàÃû Car ´´½¨¶ÔÏ󣬾͸üÏñ ECMAScript ÖÐÒ»°ã¶ÔÏóµÄ´´½¨·½Ê½ÁË¡£
ÄãÒ²Ðí»áÎÊ£¬ÕâÖÖ·½Ê½ÔÚ¹ÜÀíº¯Êý·½ÃæÊÇ·ñ´æÔÚÓÚǰһÖÖ·½Ê½ÏàͬµÄÎÊÌâÄØ£¿Êǵġ£
¾ÍÏñ¹¤³§º¯Êý£¬¹¹Ô캯Êý»áÖØ¸´Éú³Éº¯Êý£¬ÎªÃ¿¸ö¶ÔÏó¶¼´´½¨¶ÀÁ¢µÄº¯Êý°æ±¾¡£²»¹ý£¬Ó빤³§º¯ÊýÏàËÆ£¬Ò²¿ÉÒÔÓÃÍⲿº¯ÊýÖØÐ´¹¹Ô캯Êý£¬Í¬ÑùµØ£¬Õâô×öÓïÒåÉÏÎÞÈκÎÒâÒå¡£ÕâÕýÊÇÏÂÃæÒª½²µÄÔÐÍ·½Ê½µÄÓÅÊÆËùÔÚ¡£
ÔÐÍ·½Ê½
¸Ã·½Ê½ÀûÓÃÁ˶ÔÏóµÄ prototype ÊôÐÔ£¬¿ÉÒÔ°ÑËü¿´³É´´½¨Ð¶ÔÏóËùÒÀÀµµÄÔÐÍ¡£
ÕâÀÊ×ÏÈÓÿչ¹Ô캯ÊýÀ´ÉèÖÃÀàÃû¡£È»ºóËùÓеÄÊôÐԺͷ½·¨¶¼±»Ö±½Ó¸³Óè prototype ÊôÐÔ¡£ÎÒÃÇÖØÐ´ÁËÇ°ÃæµÄÀý×Ó£¬´úÂëÈçÏ£º
function Car() { } Car.prototype.color = "blue"; Car.prototype.doors = 4; Car.prototype.mpg = 25; Car.prototype.showColor = function() { alert(this.color); }; var oCar1 = new Car(); var oCar2 = new Car();
ÔÚÕâ¶Î´úÂëÖУ¬Ê×Ïȶ¨Òå¹¹Ô캯Êý£¨Car£©£¬ÆäÖÐÎÞÈκδúÂë¡£½ÓÏÂÀ´µÄ¼¸ÐдúÂ룬ͨ¹ý¸ø Car µÄ prototype ÊôÐÔÌí¼ÓÊôÐÔÈ¥¶¨Òå Car ¶ÔÏóµÄÊôÐÔ¡£µ÷Óà new Car() ʱ£¬ÔÐ͵ÄËùÓÐÊôÐÔ¶¼±»Á¢¼´¸³ÓèÒª´´½¨µÄ¶ÔÏó£¬Òâζ×ÅËùÓÐ Car ʵÀý´æ·ÅµÄ¶¼ÊÇÖ¸Ïò showColor() º¯ÊýµÄÖ¸Õë¡£´ÓÓïÒåÉϽ²£¬ËùÓÐÊôÐÔ¿´ÆðÀ´¶¼ÊôÓÚÒ»¸ö¶ÔÏó£¬Òò´Ë½â¾öÁËÇ°ÃæÁ½ÖÖ·½Ê½´æÔÚµÄÎÊÌâ¡£
´ËÍ⣬ʹÓÃÕâÖÖ·½Ê½£¬»¹ÄÜÓà instanceof ÔËËã·û¼ì²é¸ø¶¨±äÁ¿Ö¸ÏòµÄ¶ÔÏóµÄÀàÐÍ¡£Òò´Ë£¬ÏÂÃæµÄ´úÂ뽫Êä³ö TRUE£º
alert(oCar1 instanceof Car); //Êä³ö "true"
ÔÐÍ·½Ê½µÄÎÊÌâ
ÔÐÍ·½Ê½¿´ÆðÀ´ÊǸö²»´íµÄ½â¾ö·½°¸¡£Òź¶µÄÊÇ£¬Ëü²¢²»¾¡ÈçÈËÒâ¡£
Ê×ÏÈ£¬Õâ¸ö¹¹Ô캯ÊýûÓвÎÊý¡£Ê¹ÓÃÔÐÍ·½Ê½£¬²»ÄÜͨ¹ý¸ø¹¹Ô캯Êý´«µÝ²ÎÊýÀ´³õʼ»¯ÊôÐÔµÄÖµ£¬ÒòΪ Car1 ºÍ Car2 µÄ color ÊôÐÔ¶¼µÈÓÚ "blue"£¬doors ÊôÐÔ¶¼µÈÓÚ 4£¬mpg ÊôÐÔ¶¼µÈÓÚ 25¡£ÕâÒâζ×űØÐëÔÚ¶ÔÏó´´½¨ºó²ÅÄܸıäÊôÐÔµÄĬÈÏÖµ£¬ÕâµãºÜÁîÈËÌÖÑᣬµ«»¹Ã»Íê¡£ÕæÕýµÄÎÊÌâ³öÏÖÔÚÊôÐÔÖ¸ÏòµÄÊǶÔÏ󣬶ø²»ÊǺ¯Êýʱ¡£º¯Êý¹²Ïí²»»áÔì³ÉÎÊÌ⣬µ«¶ÔÏóÈ´ºÜÉÙ±»¶à¸öʵÀý¹²Ïí¡£Çë˼¿¼ÏÂÃæµÄÀý×Ó£º
function Car() { } Car.prototype.color = "blue"; Car.prototype.doors = 4; Car.prototype.mpg = 25;Car.prototype.drivers = new Array("Mike","John");
Car.prototype.showColor = function() { alert(this.color); }; var oCar1 = new Car(); var oCar2 = new Car();oCar1.drivers.push("Bill");
alert(oCar1.drivers); //Êä³ö "Mike,John,Bill" alert(oCar2.drivers); //Êä³ö "Mike,John,Bill"
ÉÏÃæµÄ´úÂëÖУ¬ÊôÐÔ drivers ÊÇÖ¸Ïò Array ¶ÔÏóµÄÖ¸Õ룬¸ÃÊý×éÖаüº¬Á½¸öÃû×Ö "Mike" ºÍ "John"¡£ÓÉÓÚ drivers ÊÇÒýÓÃÖµ£¬Car µÄÁ½¸öʵÀý¶¼Ö¸Ïòͬһ¸öÊý×é¡£ÕâÒâζןø oCar1.drivers Ìí¼ÓÖµ "Bill"£¬ÔÚ oCar2.drivers ÖÐÒ²ÄÜ¿´µ½¡£Êä³öÕâÁ½¸öÖ¸ÕëÖеÄÈκÎÒ»¸ö£¬½á¹û¶¼ÊÇÏÔʾ×Ö·û´® "Mike,John,Bill"¡£
ÓÉÓÚ´´½¨¶ÔÏóʱÓÐÕâô¶àÎÊÌ⣬ÄãÒ»¶¨»áÏ룬ÊÇ·ñÓÐÖÖºÏÀíµÄ´´½¨¶ÔÏóµÄ·½·¨ÄØ£¿´ð°¸ÊÇÓУ¬ÐèÒªÁªºÏʹÓù¹Ô캯ÊýºÍÔÐÍ·½Ê½¡£
»ìºÏµÄ¹¹Ô캯Êý/ÔÐÍ·½Ê½
ÁªºÏʹÓù¹Ô캯ÊýºÍÔÐÍ·½Ê½£¬¾Í¿ÉÏñÓÃÆäËû³ÌÐòÉè¼ÆÓïÑÔÒ»Ñù´´½¨¶ÔÏó¡£ÕâÖÖ¸ÅÄî·Ç³£¼òµ¥£¬¼´Óù¹Ô캯Êý¶¨Òå¶ÔÏóµÄËùÓзǺ¯ÊýÊôÐÔ£¬ÓÃÔÐÍ·½Ê½¶¨Òå¶ÔÏóµÄº¯ÊýÊôÐÔ£¨·½·¨£©¡£½á¹ûÊÇ£¬ËùÓк¯Êý¶¼Ö»´´½¨Ò»´Î£¬¶øÃ¿¸ö¶ÔÏó¶¼¾ßÓÐ×Ô¼ºµÄ¶ÔÏóÊôÐÔʵÀý¡£
ÎÒÃÇÖØÐ´ÁËÇ°ÃæµÄÀý×Ó£¬´úÂëÈçÏ£º
function Car(sColor,iDoors,iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array("Mike","John"); } Car.prototype.showColor = function() { alert(this.color); }; var oCar1 = new Car("red",4,23); var oCar2 = new Car("blue",3,25); oCar1.drivers.push("Bill"); alert(oCar1.drivers); //Êä³ö "Mike,John,Bill" alert(oCar2.drivers); //Êä³ö "Mike,John"
ÏÖÔھ͸üÏñ´´½¨Ò»°ã¶ÔÏóÁË¡£ËùÓеķǺ¯ÊýÊôÐÔ¶¼ÔÚ¹¹Ô캯ÊýÖд´½¨£¬Òâζ×ÅÓÖÄܹ»Óù¹Ô캯ÊýµÄ²ÎÊý¸³ÓèÊôÐÔĬÈÏÖµÁË¡£ÒòΪֻ´´½¨ showColor() º¯ÊýµÄÒ»¸öʵÀý£¬ËùÒÔûÓÐÄÚ´æÀË·Ñ¡£´ËÍ⣬¸ø oCar1 µÄ drivers Êý×éÌí¼Ó "Bill" Öµ£¬²»»áÓ°Ïìµ½ oCar2 µÄÊý×飬ËùÒÔÊä³öÕâЩÊý×éµÄֵʱ£¬oCar1.drivers ÏÔʾµÄÊÇ "Mike,John,Bill"£¬¶ø oCar2.drivers ÏÔʾµÄÊÇ "Mike,John"¡£ÒòΪʹÓÃÁËÔÐÍ·½Ê½£¬ËùÒÔÈÔÈ»ÄÜÀûÓà instanceof ÔËËã·ûÀ´Åж϶ÔÏóµÄÀàÐÍ¡£
ÕâÖÖ·½Ê½ÊÇ ECMAScript ²ÉÓõÄÖ÷Òª·½Ê½£¬Ëü¾ßÓÐÆäËû·½Ê½µÄÌØÐÔ£¬È´Ã»ÓÐËûÃǵĸ±×÷Óᣲ»¹ý£¬ÓÐЩ¿ª·¢ÕßÈÔ¾õµÃÕâÖÖ·½·¨²»¹»ÍêÃÀ¡£
¶¯Ì¬ÔÐÍ·½·¨
¶ÔÓÚϰ¹ßʹÓÃÆäËûÓïÑԵĿª·¢ÕßÀ´Ëµ£¬Ê¹ÓûìºÏµÄ¹¹Ô캯Êý/ÔÐÍ·½Ê½¸Ð¾õ²»ÄÇôºÍг¡£±Ï¾¹£¬¶¨ÒåÀàʱ£¬´ó¶àÊýÃæÏò¶ÔÏóÓïÑÔ¶¼¶ÔÊôÐԺͷ½·¨½øÐÐÁËÊÓ¾õÉϵķâ×°¡£Ç뿼ÂÇÏÂÃæµÄ Java Àࣺ
class Car { public String color = "blue"; public int doors = 4; public int mpg = 25; public Car(String color, int doors, int mpg) { this.color = color; this.doors = doors; this.mpg = mpg; } public void showColor() { System.out.println(color); } }
Java ºÜºÃµØ´ò°üÁË Car ÀàµÄËùÓÐÊôÐԺͷ½·¨£¬Òò´Ë¿´¼ûÕâ¶Î´úÂë¾ÍÖªµÀËüҪʵÏÖʲô¹¦ÄÜ£¬Ëü¶¨ÒåÁËÒ»¸ö¶ÔÏóµÄÐÅÏ¢¡£ÅúÆÀ»ìºÏµÄ¹¹Ô캯Êý/ÔÐÍ·½Ê½µÄÈËÈÏΪ£¬ÔÚ¹¹Ô캯ÊýÄÚ²¿ÕÒÊôÐÔ£¬ÔÚÆäÍⲿÕÒ·½·¨µÄ×ö·¨²»ºÏÂß¼¡£Òò´Ë£¬ËûÃÇÉè¼ÆÁ˶¯Ì¬ÔÐÍ·½·¨£¬ÒÔÌṩ¸üÓѺõıàÂë·ç¸ñ¡£
¶¯Ì¬ÔÐÍ·½·¨µÄ»ù±¾Ïë·¨Óë»ìºÏµÄ¹¹Ô캯Êý/ÔÐÍ·½Ê½Ïàͬ£¬¼´ÔÚ¹¹Ô캯ÊýÄÚ¶¨Òå·Çº¯ÊýÊôÐÔ£¬¶øº¯ÊýÊôÐÔÔòÀûÓÃÔÐÍÊôÐÔ¶¨Ò塣ΨһµÄÇø±ðÊǸ³Óè¶ÔÏó·½·¨µÄλÖá£ÏÂÃæÊÇÓö¯Ì¬ÔÐÍ·½·¨ÖØÐ´µÄ Car Àࣺ
function Car(sColor,iDoors,iMpg) { this.color = sColor; this.doors = iDoors; this.mpg = iMpg; this.drivers = new Array("Mike","John"); if (typeof Car._initialized == "undefined"
) { Car.prototype.showColor = function() { alert(this.color); };Car._initialized = true;
} }
Ö±µ½¼ì²é typeof Car._initialized ÊÇ·ñµÈÓÚ "undefined" ֮ǰ£¬Õâ¸ö¹¹Ô캯Êý¶¼Î´·¢Éú±ä»¯¡£ÕâÐдúÂëÊǶ¯Ì¬ÔÐÍ·½·¨ÖÐ×îÖØÒªµÄ²¿·Ö¡£Èç¹ûÕâ¸öֵ䶨Ò壬¹¹Ô캯Êý½«ÓÃÔÐÍ·½Ê½¼ÌÐø¶¨Òå¶ÔÏóµÄ·½·¨£¬È»ºó°Ñ Car._initialized ÉèÖÃΪ true¡£Èç¹ûÕâ¸öÖµ¶¨ÒåÁË£¨ËüµÄֵΪ true ʱ£¬typeof µÄֵΪ Boolean£©£¬ÄÇô¾Í²»ÔÙ´´½¨¸Ã·½·¨¡£¼ò¶øÑÔÖ®£¬¸Ã·½·¨Ê¹ÓñêÖ¾£¨_initialized£©À´ÅжÏÊÇ·ñÒѸøÔÐ͸³ÓèÁËÈκη½·¨¡£¸Ã·½·¨Ö»´´½¨²¢¸³ÖµÒ»´Î£¬´«Í³µÄ OOP ¿ª·¢Õß»á¸ßÐ˵ط¢ÏÖ£¬Õâ¶Î´úÂë¿´ÆðÀ´¸üÏñÆäËûÓïÑÔÖеÄÀඨÒåÁË¡£
»ìºÏ¹¤³§·½Ê½
ÕâÖÖ·½Ê½Í¨³£ÊÇÔÚ²»ÄÜÓ¦ÓÃǰһÖÖ·½Ê½Ê±µÄ±äͨ·½·¨¡£ËüµÄÄ¿µÄÊÇ´´½¨¼Ù¹¹Ô캯Êý£¬Ö»·µ»ØÁíÒ»ÖÖ¶ÔÏóµÄÐÂʵÀý¡£
Õâ¶Î´úÂë¿´ÆðÀ´Ó빤³§º¯Êý·Ç³£ÏàËÆ£º
function Car() {
var oTempCar = new Object;
oTempCar.color = "blue";
oTempCar.doors = 4;
oTempCar.mpg = 25;
oTempCar.showColor = function() {
alert(this.color);
};
return oTempCar;
}
Ó뾵䷽ʽ²»Í¬£¬ÕâÖÖ·½Ê½Ê¹Óà new ÔËËã·û£¬Ê¹Ëü¿´ÆðÀ´ÏñÕæÕýµÄ¹¹Ô캯Êý£º
var car = new Car();
ÓÉÓÚÔÚ Car() ¹¹Ô캯ÊýÄÚ²¿µ÷ÓÃÁË new ÔËËã·û£¬ËùÒÔ½«ºöÂÔµÚ¶þ¸ö new ÔËËã·û£¨Î»ÓÚ¹¹Ô캯ÊýÖ®Í⣩£¬ÔÚ¹¹Ô캯ÊýÄÚ²¿´´½¨µÄ¶ÔÏó±»´«µÝ»Ø±äÁ¿ car¡£
ÕâÖÖ·½Ê½ÔÚ¶ÔÏó·½·¨µÄÄÚ²¿¹ÜÀí·½ÃæÓ뾵䷽ʽÓÐ×ÅÏàͬµÄÎÊÌ⡣ǿÁÒ½¨Ò飺³ý·ÇÍò²»µÃÒÑ£¬»¹ÊDZÜÃâʹÓÃÕâÖÖ·½Ê½¡£
²ÉÓÃÄÄÖÖ·½Ê½
ÈçǰËùÊö£¬Ä¿Ç°Ê¹ÓÃ×î¹ã·ºµÄÊÇ»ìºÏµÄ¹¹Ô캯Êý/ÔÐÍ·½Ê½¡£´ËÍ⣬¶¯Ì¬Ôʼ·½·¨Ò²ºÜÁ÷ÐУ¬ÔÚ¹¦ÄÜÉÏÓë¹¹Ô캯Êý/ÔÐÍ·½Ê½µÈ¼Û¡£¿ÉÒÔ²ÉÓÃÕâÁ½ÖÖ·½Ê½ÖеÄÈκÎÒ»ÖÖ¡£²»¹ý²»Òªµ¥¶ÀʹÓþµäµÄ¹¹Ô캯Êý»òÔÐÍ·½Ê½£¬ÒòΪÕâÑù»á¸ø´úÂëÒýÈëÎÊÌâ¡£
ʵÀý
¶ÔÏóÁîÈ˸ÐÐËȤµÄÒ»µãÊÇÓÃËüÃǽâ¾öÎÊÌâµÄ·½Ê½¡£ECMAScript ÖÐ×î³£¼ûµÄÒ»¸öÎÊÌâÊÇ×Ö·û´®Á¬½ÓµÄÐÔÄÜ¡£ÓëÆäËûÓïÑÔÀàËÆ£¬ECMAScript µÄ×Ö·û´®ÊDz»¿É±äµÄ£¬¼´ËüÃǵÄÖµ²»Äܸı䡣Ç뿼ÂÇÏÂÃæµÄ´úÂ룺
var str = "hello "; str += "world";
ʵ¼ÊÉÏ£¬Õâ¶Î´úÂëÔÚÄ»ºóÖ´ÐеIJ½ÖèÈçÏ£º
- ´´½¨´æ´¢ "hello " µÄ×Ö·û´®¡£
- ´´½¨´æ´¢ "world" µÄ×Ö·û´®¡£
- ´´½¨´æ´¢Á¬½Ó½á¹ûµÄ×Ö·û´®¡£
- °Ñ str µÄµ±Ç°ÄÚÈݸ´ÖƵ½½á¹ûÖС£
- °Ñ "world" ¸´ÖƵ½½á¹ûÖС£
- ¸üРstr£¬Ê¹ËüÖ¸Ïò½á¹û¡£
ÿ´ÎÍê³É×Ö·û´®Á¬½Ó¶¼»áÖ´Ðв½Öè 2 µ½ 6£¬Ê¹µÃÕâÖÖ²Ù×÷·Ç³£ÏûºÄ×ÊÔ´¡£Èç¹ûÖØ¸´ÕâÒ»¹ý³Ì¼¸°Ù´Î£¬ÉõÖÁ¼¸Ç§´Î£¬¾Í»áÔì³ÉÐÔÄÜÎÊÌâ¡£½â¾ö·½·¨ÊÇÓà Array ¶ÔÏó´æ´¢×Ö·û´®£¬È»ºóÓà join() ·½·¨£¨²ÎÊýÊÇ¿Õ×Ö·û´®£©´´½¨×îºóµÄ×Ö·û´®¡£ÏëÏóÓÃÏÂÃæµÄ´úÂë´úÌæÇ°ÃæµÄ´úÂ룺
var arr = new Array(); arr[0] = "hello "; arr[1] = "world"; var str = arr.join("");
ÕâÑù£¬ÎÞÂÛÊý×éÖÐÒýÈë¶àÉÙ×Ö·û´®¶¼²»³ÉÎÊÌ⣬ÒòΪֻÔÚµ÷Óà join() ·½·¨Ê±²Å»á·¢ÉúÁ¬½Ó²Ù×÷¡£´Ëʱ£¬Ö´ÐеIJ½ÖèÈçÏ£º
- ´´½¨´æ´¢½á¹ûµÄ×Ö·û´®
- °Ñÿ¸ö×Ö·û´®¸´ÖƵ½½á¹ûÖеĺÏÊÊλÖÃ
ËäÈ»ÕâÖÖ½â¾ö·½°¸ºÜºÃ£¬µ«»¹ÓиüºÃµÄ·½·¨¡£ÎÊÌâÊÇ£¬Õâ¶Î´úÂë²»ÄÜÈ·Çз´Ó³³öËüµÄÒâͼ¡£ÒªÊ¹Ëü¸üÈÝÒ×Àí½â£¬¿ÉÒÔÓà StringBuffer Àà´ò°ü¸Ã¹¦ÄÜ£º
function StringBuffer () { this._strings_ = new Array(); } StringBuffer.prototype.append = function(str) { this._strings_.push(str); }; StringBuffer.prototype.toString = function() { return this._strings_.join(""); };
Õâ¶Î´úÂëÊ×ÏÈҪעÒâµÄÊÇ strings ÊôÐÔ£¬±¾ÒâÊÇ˽ÓÐÊôÐÔ¡£ËüÖ»ÓÐÁ½¸ö·½·¨£¬¼´ append() ºÍ toString() ·½·¨¡£append() ·½·¨ÓÐÒ»¸ö²ÎÊý£¬Ëü°Ñ¸Ã²ÎÊý¸½¼Óµ½×Ö·û´®Êý×éÖУ¬toString() ·½·¨µ÷ÓÃÊý×éµÄ join ·½·¨£¬·µ»ØÕæÕýÁ¬½Ó³ÉµÄ×Ö·û´®¡£ÒªÓà StringBuffer ¶ÔÏóÁ¬½ÓÒ»×é×Ö·û´®£¬¿ÉÒÔÓÃÏÂÃæµÄ´úÂ룺
var buffer = new StringBuffer (); buffer.append("hello "); buffer.append("world"); var result = buffer.toString();
¿ÉÓÃÏÂÃæµÄ´úÂë²âÊÔ StringBuffer ¶ÔÏóºÍ´«Í³µÄ×Ö·û´®Á¬½Ó·½·¨µÄÐÔÄÜ£º
var d1 = new Date(); var str = ""; for (var i=0; i < 10000; i++) { str += "text"; } var d2 = new Date(); document.write("Concatenation with plus: " + (d2.getTime() - d1.getTime()) + " milliseconds"); var buffer = new StringBuffer(); d1 = new Date(); for (var i=0; i < 10000; i++) { buffer.append("text"); } var result = buffer.toString(); d2 = new Date(); document.write("<br />Concatenation with StringBuffer: " + (d2.getTime() - d1.getTime()) + " milliseconds");
Õâ¶Î´úÂë¶Ô×Ö·û´®Á¬½Ó½øÐÐÁ½¸ö²âÊÔ£¬µÚÒ»¸öʹÓüӺţ¬µÚ¶þ¸öʹÓà StringBuffer Àࡣÿ¸ö²Ù×÷¶¼Á¬½Ó 10000 ¸ö×Ö·û´®¡£ÈÕÆÚÖµ d1 ºÍ d2 ÓÃÓÚÅжÏÍê³É²Ù×÷ÐèÒªµÄʱ¼ä¡£Çë×¢Ò⣬´´½¨ Date ¶ÔÏóʱ£¬Èç¹ûûÓвÎÊý£¬¸³Óè¶ÔÏóµÄÊǵ±Ç°µÄÈÕÆÚºÍʱ¼ä¡£Òª¼ÆËãÁ¬½Ó²Ù×÷Àú¾¶àÉÙʱ¼ä£¬°ÑÈͮ򵀼ÁÃë±íʾ£¨Óà getTime() ·½·¨µÄ·µ»ØÖµ£©Ïà¼õ¼´¿É¡£ÕâÊǺâÁ¿ JavaScript ÐÔÄܵij£¼û·½·¨¡£¸Ã²âÊԵĽá¹û¿ÉÒÔ°ïÖúÄú±È½ÏʹÓà StringBuffer ÀàÓëʹÓüӺŵÄЧÂʲîÒì¡£