ECMAScript ¶¨ÒåÀà»ò¶ÔÏó

ʹÓÃÔ¤¶¨Òå¶ÔÏóÖ»ÊÇÃæÏò¶ÔÏóÓïÑÔµÄÄÜÁ¦µÄÒ»²¿·Ö£¬ËüÕæÕýÇ¿´óÖ®´¦ÔÚÓÚÄܹ»´´½¨×Ô¼º×¨ÓõÄÀàºÍ¶ÔÏó¡£

ECMAScript ÓµÓкܶഴ½¨¶ÔÏó»òÀàµÄ·½·¨¡£

¹¤³§·½Ê½

ԭʼµÄ·½Ê½

ÒòΪ¶ÔÏóµÄÊôÐÔ¿ÉÒÔÔÚ¶ÔÏó´´½¨ºó¶¯Ì¬¶¨Ò壬ËùÓÐÐí¶à¿ª·¢Õß¶¼ÔÚ JavaScript ×î³õÒýÈëʱ±àдÀàËÆÏÂÃæµÄ´úÂ룺

var oCar = new Object;
oCar.color = "blue";
oCar.doors = 4;
oCar.mpg = 25;
oCar.showColor = function() {
  alert(this.color);
};

TIY

ÔÚÉÏÃæµÄ´úÂëÖУ¬´´½¨¶ÔÏó 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();

TIY

ÔÚÕâÀµÚÒ»¸öÀý×ÓÖеÄËùÓдúÂë¶¼°üº¬ÔÚ 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"

TIY

¸ø 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"

TIY

ÔÚÉÏÃæÕâ¶ÎÖØÐ´µÄ´úÂëÖУ¬ÔÚº¯Êý 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);

TIY

ÏÂÃæÎªÄú½âÊÍÉÏÃæµÄ´úÂëÓ빤³§·½Ê½µÄ²î±ð¡£Ê×ÏÈÔÚ¹¹Ô캯ÊýÄÚûÓд´½¨¶ÔÏ󣬶øÊÇʹÓà 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();

TIY

ÔÚÕâ¶Î´úÂëÖУ¬Ê×Ïȶ¨Òå¹¹Ô캯Êý£¨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"

TIY

ÉÏÃæµÄ´úÂëÖУ¬ÊôÐÔ 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"

TIY

ÏÖÔھ͸üÏñ´´½¨Ò»°ã¶ÔÏóÁË¡£ËùÓеķǺ¯ÊýÊôÐÔ¶¼ÔÚ¹¹Ô캯ÊýÖд´½¨£¬Òâζ×ÅÓÖÄܹ»Óù¹Ô캯ÊýµÄ²ÎÊý¸³ÓèÊôÐÔĬÈÏÖµÁË¡£ÒòΪֻ´´½¨ 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;
  }
}

TIY

Ö±µ½¼ì²é 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;
}

TIY

Óë¾­µä·½Ê½²»Í¬£¬ÕâÖÖ·½Ê½Ê¹Óà new ÔËËã·û£¬Ê¹Ëü¿´ÆðÀ´ÏñÕæÕýµÄ¹¹Ô캯Êý£º

var car = new Car();

ÓÉÓÚÔÚ Car() ¹¹Ô캯ÊýÄÚ²¿µ÷ÓÃÁË new ÔËËã·û£¬ËùÒÔ½«ºöÂÔµÚ¶þ¸ö new ÔËËã·û£¨Î»ÓÚ¹¹Ô캯ÊýÖ®Í⣩£¬ÔÚ¹¹Ô캯ÊýÄÚ²¿´´½¨µÄ¶ÔÏó±»´«µÝ»Ø±äÁ¿ car¡£

ÕâÖÖ·½Ê½ÔÚ¶ÔÏó·½·¨µÄÄÚ²¿¹ÜÀí·½ÃæÓë¾­µä·½Ê½ÓÐ×ÅÏàͬµÄÎÊÌ⡣ǿÁÒ½¨Ò飺³ý·ÇÍò²»µÃÒÑ£¬»¹ÊDZÜÃâʹÓÃÕâÖÖ·½Ê½¡£

²ÉÓÃÄÄÖÖ·½Ê½

ÈçǰËùÊö£¬Ä¿Ç°Ê¹ÓÃ×î¹ã·ºµÄÊÇ»ìºÏµÄ¹¹Ô캯Êý/Ô­ÐÍ·½Ê½¡£´ËÍ⣬¶¯Ì¬Ô­Ê¼·½·¨Ò²ºÜÁ÷ÐУ¬ÔÚ¹¦ÄÜÉÏÓë¹¹Ô캯Êý/Ô­ÐÍ·½Ê½µÈ¼Û¡£¿ÉÒÔ²ÉÓÃÕâÁ½ÖÖ·½Ê½ÖеÄÈκÎÒ»ÖÖ¡£²»¹ý²»Òªµ¥¶ÀʹÓþ­µäµÄ¹¹Ô캯Êý»òÔ­ÐÍ·½Ê½£¬ÒòΪÕâÑù»á¸ø´úÂëÒýÈëÎÊÌâ¡£

ʵÀý

¶ÔÏóÁîÈ˸ÐÐËȤµÄÒ»µãÊÇÓÃËüÃǽâ¾öÎÊÌâµÄ·½Ê½¡£ECMAScript ÖÐ×î³£¼ûµÄÒ»¸öÎÊÌâÊÇ×Ö·û´®Á¬½ÓµÄÐÔÄÜ¡£ÓëÆäËûÓïÑÔÀàËÆ£¬ECMAScript µÄ×Ö·û´®ÊDz»¿É±äµÄ£¬¼´ËüÃǵÄÖµ²»Äܸı䡣Ç뿼ÂÇÏÂÃæµÄ´úÂ룺

var str = "hello ";
str += "world";

ʵ¼ÊÉÏ£¬Õâ¶Î´úÂëÔÚÄ»ºóÖ´ÐеIJ½ÖèÈçÏ£º

  1. ´´½¨´æ´¢ "hello " µÄ×Ö·û´®¡£
  2. ´´½¨´æ´¢ "world" µÄ×Ö·û´®¡£
  3. ´´½¨´æ´¢Á¬½Ó½á¹ûµÄ×Ö·û´®¡£
  4. °Ñ str µÄµ±Ç°ÄÚÈݸ´ÖƵ½½á¹ûÖС£
  5. °Ñ "world" ¸´ÖƵ½½á¹ûÖС£
  6. ¸üРstr£¬Ê¹ËüÖ¸Ïò½á¹û¡£

ÿ´ÎÍê³É×Ö·û´®Á¬½Ó¶¼»áÖ´Ðв½Öè 2 µ½ 6£¬Ê¹µÃÕâÖÖ²Ù×÷·Ç³£ÏûºÄ×ÊÔ´¡£Èç¹ûÖØ¸´ÕâÒ»¹ý³Ì¼¸°Ù´Î£¬ÉõÖÁ¼¸Ç§´Î£¬¾Í»áÔì³ÉÐÔÄÜÎÊÌâ¡£½â¾ö·½·¨ÊÇÓà Array ¶ÔÏó´æ´¢×Ö·û´®£¬È»ºóÓà join() ·½·¨£¨²ÎÊýÊÇ¿Õ×Ö·û´®£©´´½¨×îºóµÄ×Ö·û´®¡£ÏëÏóÓÃÏÂÃæµÄ´úÂë´úÌæÇ°ÃæµÄ´úÂ룺

var arr = new Array();
arr[0] = "hello ";
arr[1] = "world";
var str = arr.join("");

ÕâÑù£¬ÎÞÂÛÊý×éÖÐÒýÈë¶àÉÙ×Ö·û´®¶¼²»³ÉÎÊÌ⣬ÒòΪֻÔÚµ÷Óà join() ·½·¨Ê±²Å»á·¢ÉúÁ¬½Ó²Ù×÷¡£´Ëʱ£¬Ö´ÐеIJ½ÖèÈçÏ£º

  1. ´´½¨´æ´¢½á¹ûµÄ×Ö·û´®
  2. °Ñÿ¸ö×Ö·û´®¸´ÖƵ½½á¹ûÖеĺÏÊÊλÖÃ

ËäÈ»ÕâÖÖ½â¾ö·½°¸ºÜºÃ£¬µ«»¹ÓиüºÃµÄ·½·¨¡£ÎÊÌâÊÇ£¬Õâ¶Î´úÂë²»ÄÜÈ·Çз´Ó³³öËüµÄÒâͼ¡£ÒªÊ¹Ëü¸üÈÝÒ×Àí½â£¬¿ÉÒÔÓà 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();

TIY

¿ÉÓÃÏÂÃæµÄ´úÂë²âÊÔ 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");

TIY

Õâ¶Î´úÂë¶Ô×Ö·û´®Á¬½Ó½øÐÐÁ½¸ö²âÊÔ£¬µÚÒ»¸öʹÓüӺţ¬µÚ¶þ¸öʹÓà StringBuffer Àࡣÿ¸ö²Ù×÷¶¼Á¬½Ó 10000 ¸ö×Ö·û´®¡£ÈÕÆÚÖµ d1 ºÍ d2 ÓÃÓÚÅжÏÍê³É²Ù×÷ÐèÒªµÄʱ¼ä¡£Çë×¢Ò⣬´´½¨ Date ¶ÔÏóʱ£¬Èç¹ûûÓвÎÊý£¬¸³Óè¶ÔÏóµÄÊǵ±Ç°µÄÈÕÆÚºÍʱ¼ä¡£Òª¼ÆËãÁ¬½Ó²Ù×÷Àú¾­¶àÉÙʱ¼ä£¬°ÑÈͮ򵀼ÁÃë±íʾ£¨Óà getTime() ·½·¨µÄ·µ»ØÖµ£©Ïà¼õ¼´¿É¡£ÕâÊǺâÁ¿ JavaScript ÐÔÄܵij£¼û·½·¨¡£¸Ã²âÊԵĽá¹û¿ÉÒÔ°ïÖúÄú±È½ÏʹÓà StringBuffer ÀàÓëʹÓüӺŵÄЧÂʲîÒì¡£

VUE