複製鏈接
請複製以下鏈接發送給好友

Constructor

鎖定
構造函數(Constructor)在對象創建或者實例化時候被調用的方法。通常使用該方法來初始化數據成員和所需資源。構造器Constructor在js不能被繼承,因此不能重寫Overriding,但可以被重載Overloading
構造函數在C++中如果寫成public屬性那麼可以繼承
中文名
Constructor
目    的
初始化數據成員和所需資源
特    點
不能重寫Overriding
意    義
構造函數

目錄

Constructor簡介

構造函數,是一種特殊的方法,主要用來在創建對象時初始化對象,即為對象成員變量賦初始值。總與new運算符一起使用在創建對象的語句中,特別的一個類可以有多個構造函數,可根據其參數個數的不同或參數類型的不同來區分它們,即構造函數的重載。

Constructor解析

Constructor説明

JavaScript中的constructor
對象的constructor [1]  屬性用於返回創建該對象的函數,也就是我們常説的構造函數 [1] 
在JavaScript中,每個具有原型的對象都會自動獲得constructor屬性。除了arguments、Enumerator、Error、Global、Math、RegExpRegular Expression等一些特殊對象之外,其他所有的JavaScript內置對象都具備constructor屬性。例如:Array、Boolean、Date、Function、Number、Object、String等。所有主流瀏覽器均支持該屬性
瀏覽器支持
所有主要瀏覽器都支持constructor屬性。 [2] 
c++
構造函數無返回值

Constructor語法

object.constructor (js)
classname() //c++

Constructor返回值

js對象的constructor屬性返回創建該對象的函數的引用。
c++對象無返回值

Constructor示例&説明

以下代碼中的[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
參考資料