1. 程式人生 > >JavaScript 對象創建

JavaScript 對象創建

fin define ray fun {} 指向 pro 頂層函數 除了

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 對象創建