JavaScript 對象創建
tips:
JavaScript 除了null和undefined之外,其他變量都可以當做對象使用。
JavaScript 的基本數據類型有:number boolean string null undefined ,其他所有值都是對象。
JavaScript 的 typeof 只能判斷 number boolean string undefined function object 不能判斷一些具體的對象類型和null。
如果要判斷對象的具體類型則要使用 Object.prototype.toString.apply(aaa) === "[Object Array]" 來判斷,或者根據該對象的特有性質判斷,如Array對象有一個特殊屬性length。
JavaScript 的頂層函數(對象),Array,RegExp,Date,String,Object,Function等有prototype屬性。
Array , RegExp ,Date ,String, Function 都會繼承 Object.prototype中的屬性和方法。而Object.prototype.__proto__ 為null。
JavaScript 的對象創建:
1.由構造函數創建的對象繼承自創建該對象的構造函數的prototype
1.1 var a = new Object(obj);
對象 a 會對對象obj進行淺復制,即對象a可以引用對象 obj 中的方法和屬性,但是a的原型繼承指向的是 Object.prototype。此外,對象a可以修改對象 obj中的屬性和方法。
1.2 var a = Object.create(obj);
對象a的原型繼承指向obj,a可以引用obj對象中定義的屬性和方法,但是不能對obj中的屬性和方法進行修改,當a對obj中的屬性和方法賦值時,相當於在對象a中定義屬性和方法。
1.3 var FF = function(){}; var a = new FF();
此時對象a的原型繼承指向 FF的prototype.
2.由對象字面量創建的對象
2.1 var a = [];
對象a 繼承自 Array.ptototype
2.2 var a ={};
對象a指向 Object.prototype.
總結:所有的對象都有隱藏的__proto__屬性,所有的函數都有__proto__之外,還有一個prototype對象屬性。
JavaScript 對象創建