構(gòu)造函數(shù)只是一個與 new
一起使用來創(chuàng)建對象的函數(shù)。
我們使用了內(nèi)置的JavaScript構(gòu)造函數(shù),如Object,Array和Function。
構(gòu)造函數(shù)創(chuàng)建具有相同屬性和方法的對象。
構(gòu)造函數(shù)創(chuàng)建具有相同屬性和方法的對象。...
構(gòu)造函數(shù)只是以相同方式定義的函數(shù)。
構(gòu)造函數(shù)只是以相同方式定義的函數(shù)。...
例如,以下代碼創(chuàng)建一個Book函數(shù)作為其構(gòu)造函數(shù):
function Book() {
}
例如,以下代碼創(chuàng)建一個Book函數(shù)作為其構(gòu)造函數(shù):...
Book
是一個構(gòu)造函數(shù),因為它的第一個字母大寫。
定義構(gòu)造函數(shù)后,我們可以創(chuàng)建實例,如以下兩個 Book
對象:
var book1 = new Book();
var book2 = new Book();
當(dāng)沒有參數(shù)傳遞到構(gòu)造函數(shù)中時,我們甚至可以省略括號:
var book1 = new Book;
var book2 = new Book;
book1和book2是Book類型的實例。
new
運算符自動創(chuàng)建給定類型和對象的對象返回它。
我們可以使用 instanceof
運算符來推斷對象的類型。
以下代碼顯示了使用新創(chuàng)建的對象的 instanceof
:
function Book() {
}
var book1 = new Book();
var book2 = new Book();
console.log(book1 instanceof Book); // true
console.log(book2 instanceof Book); // true
上面的代碼生成以下結(jié)果。
上面的代碼生成以下結(jié)果。...
構(gòu)造函數(shù)屬性指向該構(gòu)造函數(shù)。
構(gòu)造函數(shù)屬性指向該構(gòu)造函數(shù)。...
function Book() { /*from w ww .j ava 2 s. co m*/
}
var book1 = new Book();
var book2 = new Book();
console.log(book1.constructor === Book); // true
console.log(book2.constructor === Book); // true
上面的代碼生成以下結(jié)果。
以下代碼顯示如何添加任何屬性里面的構(gòu)造函數(shù):
function Book(name) {
this.name = name;
this.writeLine = function() {
console.log(this.name);
};
}
新版本的 Book
構(gòu)造函數(shù)接受單個命名參數(shù), name
,并將其分配給this對象的name屬性。
構(gòu)造函數(shù)為對象定義一個 writeLine()
方法。
在調(diào)用構(gòu)造函數(shù)時, this
對象由 new
創(chuàng)建,它是構(gòu)造函數(shù)類型的一個實例。
下面的代碼顯示了我們可以使用 Book
構(gòu)造函數(shù)創(chuàng)建對象帶有初始化的名稱屬性:
function Book(name) { // www. j a v a2s. c om
this.name = name;
this.writeLine = function() {
console.log(this.name);
};
}
var book1 = new Book("Javascript");
var book2 = new Book("CSS");
console.log(book1.name); // "Javascript"
console.log(book2.name); // "CSS"
book1.writeLine(); // outputs "Javascript"
book2.writeLine(); // outputs "CSS"
上面的代碼生成以下結(jié)果。
更多建議: