最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

JavaScript中的prototype和constructor簡明總結(jié)_基礎(chǔ)知識

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 21:21:26
文檔

JavaScript中的prototype和constructor簡明總結(jié)_基礎(chǔ)知識

JavaScript中的prototype和constructor簡明總結(jié)_基礎(chǔ)知識:一、constructorconstructor的值是一個函數(shù)。在JavaScript中,除了null和undefined外的類型的值、數(shù)組、函數(shù)以及對象,都有一個constructor屬性,constructor屬性的值是這個值、數(shù)組、函數(shù)或者對象的構(gòu)造函數(shù)。如: 代碼如下:var a = 12, //
推薦度:
導(dǎo)讀JavaScript中的prototype和constructor簡明總結(jié)_基礎(chǔ)知識:一、constructorconstructor的值是一個函數(shù)。在JavaScript中,除了null和undefined外的類型的值、數(shù)組、函數(shù)以及對象,都有一個constructor屬性,constructor屬性的值是這個值、數(shù)組、函數(shù)或者對象的構(gòu)造函數(shù)。如: 代碼如下:var a = 12, //

一、constructor
constructor的值是一個函數(shù)。在JavaScript中,除了null和undefined外的類型的值、數(shù)組、函數(shù)以及對象,都有一個constructor屬性,constructor屬性的值是這個值、數(shù)組、函數(shù)或者對象的構(gòu)造函數(shù)。如:
代碼如下:var a = 12, // 數(shù)字
b = 'str', // 字符串
c = false, // 布爾值
d = [1, 'd', function() { return 5; }], // 數(shù)組
e = { name: 'e' }, // 對象
f = function() { return 'function'; }; // 函數(shù)

console.log('a: ', a.constructor); // Number()
console.log('b: ', b.constructor); // String()
console.log('c: ', c.constructor); // Boolean()
console.log('d: ', d.constructor); // Array()
console.log('e: ', e.constructor); // Object()
console.log('f: ', f.constructor); // Function()

以上的構(gòu)造函數(shù)都是JavaScript內(nèi)置的,我們也可以自定義構(gòu)造函數(shù),如:
代碼如下:
function A(name) {
this.name = name;
}

var a = new A('a');

console.log(a.constructor); // A(name)

調(diào)用構(gòu)造函數(shù)時,需要用new關(guān)鍵字,構(gòu)造函數(shù)返回的是一個對象,看下面的代碼就知道了:
代碼如下:var a = 4;
var b = new Number(4);

console.log('a: ', typeof a); // a: number
console.log('b: ', typeof b); // b: object

二、 prototype
prototype是函數(shù)的一個屬性,默認情況下,一個函數(shù)的prototype屬性的值是一個與函數(shù)同名的空對象,匿名函數(shù)的prototype屬性名為Object。如:
代碼如下:function fn() {}

console.log(fn.prototype); // fn { }

prototype屬性主要用來實現(xiàn)JavaScript中的繼承,如:
代碼如下:function A(name) {
this.name = name;
}

A.prototype.show = function() {
console.log(this.name);
};

function B(name) {
this.name = name;
}

B.prototype = A.prototype;

var test = new B('test');

test.show(); // test

這兒有一個問題,test的構(gòu)造函數(shù)其實是A函數(shù)而不是B函數(shù):
代碼如下:console.log(test.constructor); // A(name)

這是因為B.prototype = A.prototype把B.prototype的構(gòu)造函數(shù)改成了A,所以需要還原B.prototype的構(gòu)造函數(shù):
代碼如下:function A(name) {
this.name = name;
}

A.prototype.show = function() {
console.log(this.name);
};

function B(name) {
this.name = name;
}

B.prototype = A.prototype;
B.prototype.constructor = B;

var test = new B('test');

test.show(); // test
console.log(test.constructor); // B(name)

之所以要這么做,是因為prototype的值是一個對象,且它的構(gòu)造函數(shù)也就是它的constructor屬性的值就是它所在的函數(shù),即:
代碼如下:console.log(A.prototype.constructor === A); // true

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

JavaScript中的prototype和constructor簡明總結(jié)_基礎(chǔ)知識

JavaScript中的prototype和constructor簡明總結(jié)_基礎(chǔ)知識:一、constructorconstructor的值是一個函數(shù)。在JavaScript中,除了null和undefined外的類型的值、數(shù)組、函數(shù)以及對象,都有一個constructor屬性,constructor屬性的值是這個值、數(shù)組、函數(shù)或者對象的構(gòu)造函數(shù)。如: 代碼如下:var a = 12, //
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top