HTML5¼¼Êõ

ÉîÈëѧϰJavaScript¶ÔÏó - clearbug(3)

×ÖºÅ+ ×÷ÕߣºH5Ö®¼Ò À´Ô´£º²©¿ÍÔ° 2015-09-28 18:10 ÎÒÒªÆÀÂÛ( )

ÔÚÕâÀïÎÒÃǽ«´æÈ¡Æ÷ÊôÐÔµÄgetterºÍsetter·½·¨¿´³ÉÊÇÊôÐÔµÄÌØÐÔ¡£°´ÕÕÕâ¸öÂß¼­£¬ÎÒÃÇÒ²¿ÉÒÔ°ÑÊôÐÔµÄֵͬÑù¿´×öÊôÐÔµÄÌØÐÔ¡£Òò´Ë£¬¿ÉÒÔÈÏΪÊôÐÔ°üº¬Ò»¸öÃû×ÖºÍ4¸öÌØÐÔ¡£Êý¾ÝÊôÐÔµÄ4¸öÌØÐÔ·Ö±ðÊÇËüµÄÖµ£¨value£©¡¢¿Éд

¡¡¡¡ÔÚÕâÀïÎÒÃǽ«´æÈ¡Æ÷ÊôÐÔµÄgetterºÍsetter·½·¨¿´³ÉÊÇÊôÐÔµÄÌØÐÔ¡£°´ÕÕÕâ¸öÂß¼­£¬ÎÒÃÇÒ²¿ÉÒÔ°ÑÊôÐÔµÄֵͬÑù¿´×öÊôÐÔµÄÌØÐÔ¡£Òò´Ë£¬¿ÉÒÔÈÏΪÊôÐÔ°üº¬Ò»¸öÃû×ÖºÍ4¸öÌØÐÔ¡£Êý¾ÝÊôÐÔµÄ4¸öÌØÐÔ·Ö±ðÊÇËüµÄÖµ£¨value£©¡¢¿ÉдÐÔ£¨writable£©¡¢¿Éö¾ÙÐÔ£¨enumerable£©ºÍ¿ÉÅäÖÃÐÔ£¨configurable£©¡£´æÈ¡Æ÷ÊôÐÔ²»¾ßÓÐÖµÌØÐԺͿÉдÐÔËüÃǵĿÉдÐÔÊÇÓÉsetter·½·¨ÊÇ·ñ´æÔÚÓë·ñ¾ö¶¨µÄ¡£Òò´Ë´æÈ¡Æ÷ÊôÐÔµÄ4¸öÌØÐÔÊǶÁÈ¡£¨get£©¡¢Ð´È루set£©¡¢¿Éö¾ÙÐԺͿÉÅäÖÃÐÔ¡£

¡¡¡¡ÎªÁËʵÏÖÊôÐÔÌØÐԵIJéѯºÍÉèÖòÙ×÷£¬ECMAScript 5Öж¨ÒåÁËÒ»¸öÃûΪ“ÊôÐÔÃèÊö·û”£¨property descriptor£©µÄ¶ÔÏó£¬Õâ¸ö¶ÔÏó´ú±íÄÇ4¸öÌØÐÔ¡£ÃèÊö·û¶ÔÏóµÄÊôÐÔºÍËüÃÇËùÃèÊöµÄÊôÐÔÌØÐÔÊÇͬÃûµÄ¡£Òò´Ë£¬Êý¾ÝÊôÐÔµÄÃèÊö·û¶ÔÏóµÄÊôÐÔÓÐvalue¡¢writable¡¢enumerableºÍconfigurable¡£´æÈ¡Æ÷ÊôÐÔµÄÃèÊö·û¶ÔÏóÔòÓÃgetÊôÐÔºÍsetÊôÐÔ´úÌævalueºÍwritable¡£ÆäÖÐwritable¡¢enumerableºÍconfigurable¶¼ÊDz¼¶ûÖµ£¬µ±È»£¬getÊôÐÔºÍsetÊôÐÔÊǺ¯ÊýÖµ¡£Í¨¹ýµ÷ÓÃObject.getOwnPropertyDescriptor()¿ÉÒÔ»ñµÃij¸ö¶ÔÏóÌØ¶¨ÊôÐÔµÄÊôÐÔÃèÊö·û£º

 

¡¡¡¡´Óº¯ÊýÃû×־ͿÉÒÔ¿´³ö£¬Object.getOwnPropertyDescriptor()Ö»Äܵõ½×ÔÓÐÊôÐÔµÄÃèÊö·û£¬¶ÔÓڼ̳ÐÊôÐԺͲ»´æÔÚµÄÊôÐÔËü¶¼·µ»Øundefined¡£ÒªÏë»ñµÃ¼Ì³ÐÊôÐÔµÄÌØÐÔ£¬ÐèÒª±éÀúÔ­ÐÍÁ´£¨²»»á±éÀúÔ­ÐÍÁ´£¿²»Òª¼±£¬ÏÂÃæ»á˵µ½µÄ£©¡£

¡¡¡¡ÒªÏëÉèÖÃÊôÐÔµÄÌØÐÔ£¬»òÕßÏëÈÃн¨ÊôÐÔ¾ßÓÐijÖÖÌØÐÔ£¬ÔòÐèÒªµ÷ÓÃObject.definePeoperty()£¬´«ÈëÐèÒªÐ޸ĵĶÔÏó¡¢Òª´´½¨»òÐ޸ĵÄÊôÐÔµÄÃû³ÆÒÔ¼°ÊôÐÔÃèÊö·û¶ÔÏó£º

 

¡¡¡¡¿ÉÒÔ¿´µ½£º

¡¡¡¡¡¡¡¡¢Ù´«ÈëObject.defineProperty()µÄÊôÐÔÃèÊö·û¶ÔÏ󲻱ذüº¬ËùÓÐ4¸öÌØÐÔ£»

¡¡¡¡¡¡¡¡¢Ú¿ÉдÐÔ¿ØÖÆ×ŶÔÊôÐÔÖµµÄÐ޸ģ»

¡¡¡¡¡¡¡¡¢Û¿Éö¾ÙÐÔ¿ØÖÆ×ÅÊôÐÔÊÇ·ñ¿Éö¾Ù£¨Ã¶¾ÙÊôÐÔ£¬ÏÂÃæ»á˵µÄ£©£»

¡¡¡¡¡¡¡¡¢Ü¿ÉÅäÖÃÐÔ¿ØÖÆ×Å¶ÔÆäËûÌØÐÔ£¨°üÀ¨Ç°ÃæËµ¹ýµÄÊôÐÔÊÇ·ñ¿ÉÒÔɾ³ý£©µÄÐ޸ģ»

¡¡¡¡Èç¹ûҪͬʱÐ޸Ļò´´½¨¶à¸öÊôÐÔ£¬ÔòÐèҪʹÓÃObject.defineProperties()¡£µÚÒ»¸ö²ÎÊýÊÇÒªÐ޸ĵĶÔÏ󣬵ڶþ¸ö²ÎÊýÊÇÒ»¸öÓ³Éä±í£¬Ëü°üº¬ÒªÐ½¨»òÐ޸ĵÄÊôÐÔµÄÃû³Æ£¬ÒÔ¼°ËüÃǵÄÊôÐÔÃèÊö·û£¬ÀýÈ磺

var p = Object.defineProperties({},{ x: {value: 1, writable: true, enumerable: true, configurable: true}, y: {value: 2, writable: true, enumerable: true, configurable: true}, r: {get: function(){return 88;}, set: function(newvalue){this.x =newvalue;},enumerable: true, configurable: true}, greet: {value: function(){console.log('hello,world');}, writable: true, enumerable: true, configurable: true} });

¡¡¡¡ÏàÐÅÄãÒ²ÒѾ­´ÓʵÀýÖп´³ö£ºObject.defineProperty()ºÍObject.defineProperties()¶¼·µ»ØÐ޸ĺóµÄ¶ÔÏó¡£

¡¡¡¡Ç°ÃæÎÒÃÇ˵getterºÍsetter´æÈ¡Æ÷ÊôÐÔʱʹÓöÔÏóÖ±½ÓÁ¿Óï·¨¸øÐ¶ÔÏó¶¨Òå´æÈ¡Æ÷ÊôÐÔ£¬µ«²¢²»ÄܲéѯÊôÐÔµÄgetterºÍsetter·½·¨»ò¸øÒÑÓеĶÔÏóÌí¼ÓеĴæÈ¡Æ÷ÊôÐÔ¡£ÔÚECMAScript 5ÖУ¬¾Í¿ÉÒÔͨ¹ýObject.getOwnPropertyDescriptor()ºÍObject.defineProperty()À´Íê³ÉÕâЩ¹¤×÷À²£¡µ«ÔÚECMAScript 5֮ǰ£¬´ó¶àÊýä¯ÀÀÆ÷£¨IE³ýÍâÀ²£©ÒѾ­Ö§³Ö¶ÔÏóÖ±½ÓÁ¿Óï·¨ÖеÄgetºÍsetд·¨ÁË¡£ËùÒÔÕâЩä¯ÀÀÆ÷»¹ÌṩÁ˷DZê×¼µÄÀÏʽAPIÓÃÀ´²éѯºÍÉèÖÃgetterºÍsetter¡£ÕâЩAPIÓÐ4¸ö·½·¨×é³É£¬ËùÓжÔÏó¶¼ÓµÓÐÕâЩ·½·¨¡£__lookupGetter__()ºÍ__lookupSetter__()ÓÃÒÔ·µ»ØÒ»¸öÃüÃûÊôÐÔµÄgetterºÍsetter·½·¨¡£__defineGetter__()ºÍ__defineSetter__()ÓÃÒÔ¶¨ÒågetterºÍsetter¡£ÕâËĸö·½·¨¶¼ÊÇÒÔÁ½ÌõÏ»®Ïß×öǰ׺£¬Á½ÌõÏ»®Ïß×öºó׺£¬ÒÔ±íÃ÷ËüÃÇÊǷDZê×¼·½·¨¡£ÏÂÃæÊÇËüÃÇÓ÷¨£º

Æß.¼ì²âÊôÐÔ

¡¡JavaScript¶ÔÏó¿ÉÒÔ¿´×öÊôÐԵļ¯ºÏ£¬ÄÇôÎÒÃÇÓÐʱ¾ÍÐèÒªÅжÏij¸öÊôÐÔÊÇ·ñ´æÔÚÓÚij¸ö¶ÔÏóÖУ¬Õâ¾ÍÊǽÓÏÂÀ´ÒªËµµÄ¼ì²âÊôÐÔ¡£

¡¡  ¼ì²âÒ»¸ö¶ÔÏóµÄÊôÐÔÒ²ÓÐÈýÖÖ·½·¨£¬ÏÂÃæ¾ÍÀ´Ïêϸ˵˵ËüÃǵÄ×÷Óü°Çø±ð£¡

1.inÔËËã·û

¡¡¡¡inÔËËã·û×ó²àÊÇÊôÐÔÃû£¨×Ö·û´®£©£¬ÓÒ²àÊǶÔÏó¡£Èç¹û¶ÔÏóµÄ×ÔÓÐÊôÐÔ»ò¼Ì³ÐÊôÐÔÖаüº¬Õâ¸öÊôÐÔÔò·µ»Øtrue£¬·ñÔò·µ»Øfalse¡£

 ¡¡¡¡ÎªÁËÊÔÑ飬ÎÒÃÇÏȸø¶ÔÏóObject.prototypeÌí¼ÓÒ»¸ö¿Éö¾ÙÊôÐÔm£¬Ò»¸ö²»¿Éö¾ÙÊôÐÔn£»È»ºó£¬¸ø¶ÔÏóobj¶¨ÒåÁ½¸ö¿Éö¾ÙÊôÐÔx,Ò»¸ö²»¿Éö¾ÙÊôÐÔy£¬²¢ÇÒ¶ÔÏóobjÊÇͨ¹ý¶ÔÏóÖ±½ÓÁ¿ÐÎʽ´´½¨µÄ£¬¼Ì³ÐÁËObject.prototype¡£ÏÂÃæ¿´ÊµÀý£º

 

¡¡¡¡´ÓÔËÐнá¹û¿ÉÒÔ¿´³ö£ºinÔËËã·û×ó²àÊÇÊôÐÔÃû£¨×Ö·û´®£©£¬ÓÒ²àÊǶÔÏó¡£Èç¹û¶ÔÏóµÄ×ÔÓÐÊôÐÔ»ò¼Ì³ÐÊôÐÔ£¨²»ÂÛÕâЩÊôÐÔÊÇ·ñ¿Éö¾Ù£©Öаüº¬Õâ¸öÊôÐÔÔò·µ»Øtrue£¬·ñÔò·µ»Øfalse¡£

2.hasOwnProperty()

¡¡¡¡¶ÔÏóµÄhasOwnProperty()·½·¨ÓÃÀ´¼ì²â¸ø¶¨µÄÃû×ÖÊÇ·ñÊǶÔÏóµÄ×ÔÓÐÊôÐÔ£¨²»ÂÛÕâЩÊôÐÔÊÇ·ñ¿Éö¾Ù£©£¬¶ÔÓڼ̳ÐÊôÐÔËü½«·µ»Øfalse¡£ÏÂÃæ¿´ÊµÀý£º

3.propertyIsEnumerable()

¡¡¡¡propertyIsEnumerable()ÊÇhasOwnProperty()µÄÔöÇ¿°æ£¬Ö»Óмì²âµ½ÊÇ×ÔÓÐÊôÐÔÇÒÕâ¸öÊôÐÔ¿Éö¾ÙÐÔΪtrueʱËü²Å·µ»Øtrue¡£»¹ÊÇʵÀý£º

°Ë.ö¾ÙÊôÐÔ

¡¡

1.±¾Õ¾×ñÑ­ÐÐÒµ¹æ·¶£¬ÈκÎ×ªÔØµÄ¸å¼þ¶¼»áÃ÷È·±ê×¢×÷ÕߺÍÀ´Ô´£»2.±¾Õ¾µÄÔ­´´ÎÄÕ£¬Çë×ªÔØÊ±Îñ±Ø×¢Ã÷ÎÄÕÂ×÷ÕߺÍÀ´Ô´£¬²»×ðÖØÔ­´´µÄÐÐΪÎÒÃǽ«×·¾¿ÔðÈΣ»3.×÷ÕßͶ¸å¿ÉÄܻᾭÎÒÃDZ༭Ð޸Ļò²¹³ä¡£

Ïà¹ØÎÄÕÂ
  • HTTPЭÒéÑ§Ï°Ëæ±Ê - ÌÇ´×ËáÀ±½·

    HTTPЭÒéÑ§Ï°Ëæ±Ê - ÌÇ´×ËáÀ±½·

    2017-05-01 18:03

  • ¡¾reactѧϰ¡¿¹ØÓÚreact¿ò¼ÜʹÓõÄһЩϸ½ÚÒªµãµÄ˼¿¼ - ÍâÆÅµÄÅíºþÍå

    ¡¾reactѧϰ¡¿¹ØÓÚreact¿ò¼ÜʹÓõÄһЩϸ½ÚÒªµãµÄ˼¿¼ - ÍâÆÅµÄÅíºþ

    2017-04-16 18:00

  • ¼ÆËã»úÍøÂ硪¡ªDNSЭÒéµÄѧϰÓëʵÏÖ - ѧÊýѧµÄ³ÌÐòÔ³

    ¼ÆËã»úÍøÂ硪¡ªDNSЭÒéµÄѧϰÓëʵÏÖ - ѧÊýѧµÄ³ÌÐòÔ³

    2017-04-16 10:00

  • ASP.NET Core MVC Ô´Âëѧϰ£ºÏê½â Action µÄ¼¤»î - Savorboard

    ASP.NET Core MVC Ô´Âëѧϰ£ºÏê½â Action µÄ¼¤»î - Savorboard

    2017-04-14 13:04

ÍøÓѵãÆÀ
¸