簡介
構造函式,是一種特殊的方法,主要用來在創建對象時初始化對象,即為對象成員變數賦初始值。總與new運算符一起使用在創建對象的語句中,特別的一個類可以有多個構造函式,可根據其參數個數的不同或參數類型的不同來區分它們,即構造函式的重載。
解析
說明
JavaScript中的constructor
對象的constructor 屬性用於返回創建該對象的函式,也就是我們常說的 構造函式 。
在JavaScript中,每個具有原型的對象都會自動獲得constructor屬性。除了arguments、Enumerator、Error、Global、Math、RegExp、Regular Expression等一些特殊對象之外,其他所有的JavaScript內置對象都具備constructor屬性。例如:Array、Boolean、Date、Function、Number、Object、String等。所有主流瀏覽器均支持該屬性
瀏覽器支持
所有主要瀏覽器都支持constructor屬性。
c++
構造函式無返回值
語法
object.constructor (js) classname() //c++ |
返回值
js對象的constructor屬性返回創建該對象的函式的引用。
c++對象無返回值
示例&說明
以下代碼中的[native code],表示這是JavaScript的底層內部代碼實現,無法顯示代碼細節。
// 字元串:String() var str = "張三"; document.writeln(str.constructor); // function String() { [native code] } document.writeln(str.constructor === String); // true // 數組:Array() var arr = [1, 2, 3]; document.writeln(arr.constructor); // function Array() { [native code] } document.writeln(arr.constructor === Array); // true // 數字:Number() var num = 5; document.writeln(num.constructor); // function Number() { [native code] } document.writeln(num.constructor === Number); // true // 自定義對象:Person() function Person(){ this.name = "CodePlayer"; } var p = new Person(); document.writeln(p.constructor); // function Person(){ this.name = "CodePlayer"; } document.writeln(p.constructor === Person); // true // JSON對象:Object() var o = { "name" : "張三"}; document.writeln(o.constructor); // function Object() { [native code] } document.writeln(o.constructor === Object); // true // 自定義函式:Function() function foo(){ alert("CodePlayer"); } document.writeln(foo.constructor); // function Function() { [native code] } document.writeln(foo.constructor === Function); // true // 函式的原型:bar() function bar(){ alert("CodePlayer"); } document.writeln(bar.prototype.constructor); // function bar(){ alert("CodePlayer"); } document.writeln(bar.prototype.constructor === bar); // true |