最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Javascript 構(gòu)造函數(shù)詳解

 更新時(shí)間:2014年10月22日 11:34:50   投稿:hebedich  
Javascript構(gòu)造函數(shù)是非常強(qiáng)大的,它可能也是Javascript能被充分利用的特點(diǎn)之一。但是如果你想真正的了解Javascript,你還是應(yīng)該明白構(gòu)造函數(shù)是如何工作的。本文,我們將從三個(gè)方面來講述構(gòu)造函數(shù)。

一、什么是構(gòu)造函數(shù)

在一些面向?qū)ο蟮恼Z言,如Java、C++、PHP中,構(gòu)造函數(shù)是很常見的。在Javascript中構(gòu)造函數(shù)首先是一個(gè)普通的函數(shù),它可以使用new 操作符來調(diào)用,并生成一個(gè)特殊類型的對(duì)象。

復(fù)制代碼 代碼如下:

// "Benjamin" is a constructor
var benjamin = new Benjamin("zuojj", "male");

在上面這個(gè)實(shí)例中benjamin是一個(gè)Benjamin對(duì)象,那么它是如何來實(shí)例化的呢?

復(fù)制代碼 代碼如下:

function Benjamin(username, sex) {
    this.username = username;
    this.sex = sex;
}
var benjamin = new Benjamin("zuojj", "male");
//Outputs: Benjamin{sex: "male",username: "zuojj"}
console.log(benjamin);

正如我們所看到的,“Benjamin”構(gòu)造函數(shù)僅僅是接收傳遞過來的參數(shù),并把它們賦值給this對(duì)象。這是因?yàn)楫?dāng)構(gòu)造函數(shù)被new操作符調(diào)用時(shí),構(gòu)造函數(shù)的this對(duì)象賦值為new操作返回的對(duì)象。
這意味著上面的代碼等同于:

復(fù)制代碼 代碼如下:

benjamin = {
 "username": "zuojj",
 "sex": "male"
}

二、為什么使用構(gòu)造函數(shù)

為什么使用構(gòu)造函數(shù),有以下幾個(gè)方面的原因:
1.使用構(gòu)造函數(shù),意味著所有的這些對(duì)象,都可以使用相同的基本結(jié)構(gòu)創(chuàng)建
2.使用構(gòu)造函數(shù),意味著“benjamin”對(duì)象被明確的標(biāo)記為“Benjamin”函數(shù)的實(shí)例

復(fù)制代碼 代碼如下:

function Benjamin(username, sex) {
    this.username = username;
    this.sex = sex;
}
var benjamin = new Benjamin("zuojj", "male");
var ben = {
 "username": "zuojj",
 "sex": "male"
}
//Outputs: true
console.log(benjamin instanceof Benjamin);
//Outputs: false
console.log(ben instanceof Benjamin);

3.使用構(gòu)造函數(shù),意味著我們可以在原型上定義公共方法,供多個(gè)實(shí)例共享

復(fù)制代碼 代碼如下:

function Benjamin(username, sex) {
    this.username = username;
    this.sex = sex;
}
Benjamin.prototype.getName = function() {
 return this.username;
}
var benjamin = new Benjamin("zuojj", "male");
var ben = new Benjamin("lemon", "female");
//Outputs: zuojj
console.log(benjamin.getName());
//Outputs: lemon
console.log(ben.getName());

三、注意事項(xiàng)

1.new 關(guān)鍵字
在實(shí)例化構(gòu)造函數(shù)的時(shí)候一定不要忘了使用new關(guān)鍵字,是否使用new關(guān)鍵字,對(duì)this對(duì)象的影響很大,不用new關(guān)鍵字的情況下,this對(duì)象會(huì)指向全局對(duì)象(window in browser and global in node)。因此定義構(gòu)造函數(shù)時(shí),建議函數(shù)名稱首字母大寫。
2.如果被調(diào)用的函數(shù)沒有顯式的 return 表達(dá)式,則隱式的會(huì)返回 this 對(duì)象 – 也就是新創(chuàng)建的對(duì)象,否則將會(huì)影響返回的結(jié)果,但僅限于返回的是一個(gè)對(duì)象

復(fù)制代碼 代碼如下:

function Bar() {
    return 2;
}
var bar = new Bar();
//返回新創(chuàng)建的對(duì)象
//Outputs: Bar {}
console.log(bar);
function Test() {
    this.value = 2;
    return {
        foo: 1
    };
}
var test = new Test();
//返回的對(duì)象
//Outputs: Object {foo: 1}
console.log(test);

我們需要注意的是:
a) new Bar() 返回的是新創(chuàng)建的對(duì)象,而不是數(shù)字的字面值 2。 因此 new Bar().constructor === Bar,但是如果返回的是數(shù)字對(duì)象,結(jié)果就不同了;
b) 這里得到的 new Test()是函數(shù)返回的對(duì)象,而不是通過new關(guān)鍵字新創(chuàng)建的對(duì)象,如下所示:

復(fù)制代碼 代碼如下:

function Bar() {
    return 2;
}
var bar = new Bar();
function BarN() {
 return new Number(2);
}
var barn = new BarN();
//Outputs: true
console.log(bar.constructor === Bar);
//Outputs: Number {}
console.log(barn);
//Ouputs: false
console.log(barn.constructor === BarN);
//Outputs: true
console.log(barn.constructor === Number);
/* -------------------------------------- */
function Test() {
    this.value = 2;
    return {
        foo: 1
    };
}
var test = new Test();
//Outputs: undefined
console.log(test.value);
//Ouputs: 1
console.log(test.foo);

以上就是對(duì)構(gòu)造函數(shù)的總結(jié),希望對(duì)初學(xué)者有所幫助,文中不妥之處,望批評(píng)、斧正。

相關(guān)文章

  • 關(guān)于js中alert彈出窗口文本換行問題簡(jiǎn)單詳細(xì)說明

    關(guān)于js中alert彈出窗口文本換行問題簡(jiǎn)單詳細(xì)說明

    js中alert彈出窗口文本換行是一個(gè)小問題,本人很是郁悶,于是搜集整理下,曬出來和大家分享
    2012-12-12
  • 總結(jié)javascript三元運(yùn)算符知識(shí)點(diǎn)

    總結(jié)javascript三元運(yùn)算符知識(shí)點(diǎn)

    這是一篇關(guān)于javascript三元運(yùn)算符的相關(guān)基礎(chǔ)知識(shí)點(diǎn)內(nèi)容,大家可以學(xué)習(xí)一下鞏固基礎(chǔ)知識(shí)。
    2018-09-09
  • 使用Java實(shí)現(xiàn)簡(jiǎn)單的server/client回顯功能的方法介紹

    使用Java實(shí)現(xiàn)簡(jiǎn)單的server/client回顯功能的方法介紹

    本篇文章介紹了,使用Java實(shí)現(xiàn)簡(jiǎn)單的server/client回顯功能的方法。需要的朋友參考下
    2013-05-05
  • js單詞形式的運(yùn)算符

    js單詞形式的運(yùn)算符

    這篇文章主要介紹了js單詞形式的運(yùn)算符,需要的朋友可以參考下
    2014-05-05
  • JWT構(gòu)成及工作原理

    JWT構(gòu)成及工作原理

    這篇文章介紹了JWT構(gòu)成及工作原理,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-01-01
  • JavaScript中判斷對(duì)象類型的幾種方法總結(jié)

    JavaScript中判斷對(duì)象類型的幾種方法總結(jié)

    本篇文章是對(duì)JavaScript中判斷對(duì)象類型的幾種方法進(jìn)行了詳細(xì)的總結(jié)介紹,需要的朋友可以過來參考下,希望對(duì)大家有所幫助
    2013-11-11
  • 最新評(píng)論

    灵武市| 平乡县| 新竹市| 收藏| 称多县| 古蔺县| 文安县| 武宁县| 自治县| 高尔夫| 靖边县| 邢台县| 绥江县| 墨竹工卡县| 五常市| 泰宁县| 烟台市| 南康市| 通河县| 读书| 米脂县| 平舆县| 宝丰县| 武陟县| 苏尼特左旗| 贵溪市| 聂荣县| 保山市| 绍兴市| 中阳县| 洪雅县| 沛县| 洛隆县| 山西省| 六枝特区| 华容县| 汾阳市| 乐清市| 祥云县| 伊金霍洛旗| 郴州市|