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...