ä¿®æ¹ "prototype"
å¨ä¸é¢ç代ç ä¸ï¼æä»¬åå»ºäº new Rabbitï¼ç¶åå°è¯ä¿®æ¹å®ç prototypeã
æåï¼æä»¬æä»¥ä¸ä»£ç ï¼
function Rabbit() {}
Rabbit.prototype = {
eats: true
};
let rabbit = new Rabbit();
alert( rabbit.eats ); // true
-
æä»¬å¢å äºä¸è¡ä»£ç ï¼å·²é«äº®ï¼ãç°å¨
alert伿¾ç¤ºä»ä¹ï¼function Rabbit() {} Rabbit.prototype = { eats: true }; let rabbit = new Rabbit(); Rabbit.prototype = {}; alert( rabbit.eats ); // ? -
â¦â¦å¦æä»£ç æ¯è¿æ ·çï¼ä¿®æ¹äºä¸è¡ï¼ï¼
function Rabbit() {} Rabbit.prototype = { eats: true }; let rabbit = new Rabbit(); Rabbit.prototype.eats = false; alert( rabbit.eats ); // ? -
åè¿æ ·å¢ï¼ä¿®æ¹äºä¸è¡ï¼ï¼
function Rabbit() {} Rabbit.prototype = { eats: true }; let rabbit = new Rabbit(); delete rabbit.eats; alert( rabbit.eats ); // ? -
æåä¸ç§åä½ï¼
function Rabbit() {} Rabbit.prototype = { eats: true }; let rabbit = new Rabbit(); delete Rabbit.prototype.eats; alert( rabbit.eats ); // ?
çæ¡ï¼
-
trueãRabbit.prototypeçèµå¼æä½ä¸ºæ°å¯¹è±¡è®¾ç½®äº[[Prototype]]ï¼ä½å®ä¸å½±åå·²æç对象ã -
falseã对象éè¿å¼ç¨è¢«èµå¼ãæ¥èª
Rabbit.prototypeç对象并没æè¢«èµå¼ï¼å®ä»ç¶æ¯è¢«Rabbit.prototypeårabbitç[[Prototype]]å¼ç¨çå个对象ãæä»¥å½æä»¬éè¿ä¸ä¸ªå¼ç¨æ´æ¹å ¶å 容æ¶ï¼å®å¯¹å ¶ä»å¼ç¨ä¹æ¯å¯è§çã
-
trueãææ
deleteæä½é½ç´æ¥åºç¨äºå¯¹è±¡ãè¿éçdelete rabbit.eatsè¯å¾ä»rabbitä¸å é¤eats屿§ï¼ä½rabbit对象并没æeats屿§ãæä»¥è¿ä¸ªæä½ä¸ä¼æä»»ä½å½±åã -
undefinedã屿§
eatsè¢«ä» prototype ä¸å é¤ï¼prototype ä¸å°±æ²¡æè¿ä¸ªå±æ§äºã