標籤:c style class blog code java
<!DOCTYPE HTML><html lang="en"><head> <meta charset="UTF-8"> <title>test</title> <style type="text/css"> </style> </head> <body> <script type="text/javascript"> //◆ 所有對象都繼承自Object.prototype,它在原型鏈中是最後一個。 Object.prototype.age = 1; var obj1 = {}; console.log(obj1.age); if (‘age‘ in obj1){ console.log(obj1.hasOwnProperty(‘age‘));//驗證是否來自本機物件 }
/* ◆ 每個function都具有prototype屬性,對象都有隱式的__proto__。 ◆ 通過function執行個體化的對象,對象本身的__proto__指向function的prototype。 ◆ 對象本身的constructor指向function。 */ function f(){ this.age=2; } debugger; var obj2 = new f(); console.log(obj2.__proto__===f.prototype);//true 對象本身的__proto__指向function的prototype console.log(obj2.__proto__.__proto__===f.prototype.__proto__? f.prototype.__proto__===Object.prototype:‘false‘);//true console.log(obj2.constructor===f);//true //對象本身的constructor指向function console.log(f.prototype.isPrototypeOf(obj2));//true 檢測obj2是否是f產生的對象
//分解上面new建立的過程 var obj3 = {}; //建立一個Null 物件 obj3.__proto__===Object.prototype obj3.__proto__=f.prototype; //使對象__proto__指向__prototype f.call(obj3); //將f的this替換成obj3,然後再調用f函數. console.log(obj3.__proto__===f.prototype);// true console.log(obj3.constructor===f);// true </script></body>