建構函式constructor

2021-07-10 04:13:20 字數 1669 閱讀 1620

constructor指的就是物件的建構函式.

function

fn()

var foo = new fn();

console.log(foo.constructor);

從這個例子中,我們可以很清楚地看到foo的建構函式是fn,即foo.constructor === fn().

函式也是物件,也應該是有建構函式的,那麼函式的建構函式又是什麼呢?

console.log(fn.constructor);
function

()

函式也是被建立出來的,由function建立,function是自己所建立的,所以function的建構函式時它自己。

每個建構函式都有乙個原型物件,這個原型物件有乙個指標是指向這個建構函式的,而例項的原型包含乙個指向建構函式的原型物件的指標。

還是第乙個例子,從圖中我們可以更好的去了解

順著這條紅色的線,找到constructor,就是fn原型的建構函式同時也是foo的建構函式。

foo.constructor === fn();

fn.prototype

.constructor === fn();

舉乙個複雜一點點的例子

// 建構函式

function

foo(y)

// "foo.prototype"存放了新建物件的原型引用

// 所以我們可以將之用於定義繼承和共享屬性或方法

//繼承屬性x

foo.prototype.x = 10;

//繼承方法calculate

foo.prototype.calculate = function

(z)//使用foo模式建立b和c

var b = new foo(20);

var c = new foo(30);

//呼叫繼承的方法

b.calculate(30);

c.calculate(40);

console.log(

b.__proto__ === foo.prototype, //true

c.__proto__ === foo.prototype,//true

// "foo.prototype"自動建立了乙個特殊的屬性"constructor"指向foo本身

b.constructor === foo,//true

c.constructor === foo,//true

foo.prototype.constructor === foo,//true

b.calculate === b.__proto__.calculate,//true

b.__proto__.calculate === foo.prototype.calculate//true

);

下圖可以清楚地反映出

JS 原型constructor建構函式

一 物件原型 proto 和建構函式原型物件prototype都有乙個屬性,叫做constructor,稱之為建構函式,主要記錄該物件引用了哪個建構函式,可以讓原型物件重新指向原來的建構函式,這就是為什麼在例項物件中傳遞引數時,建構函式本身不需要寫return返回結果的原因 為了更清晰的看到是否為建...

十四 構造方法Constructor

構造方法是類中特殊的方法,通過構造方法來完成物件的建立,以及物件屬性的初始化操作。語法格式是 new 構造方法名 實際引數列表 示例 public class test class student 執行結果 以上程式可以正常編譯執行,但是在student類中沒有任何的構造方法。下面將構造方法顯示的定...

js基本Constructor(構造器)

js不支援類的概念,單它支援與物件一起用的特殊constructor 構造器 函式。通過在構造器前面加new關鍵字,告訴js想使用構造器一樣例項化乙個新的物件,並且物件成員由該函式定義。在構造器內,關鍵字this引用新建立的物件。基本構造器如下面這個例子 function car m,y,s var...