亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

普通函數(shù)和構(gòu)造函數(shù)的區(qū)別

Airmusic / 2103人閱讀

摘要:構(gòu)造函數(shù)構(gòu)造函數(shù)如用函數(shù)用來初始化使用運(yùn)算符一個新建的對象,我們稱之為構(gòu)造函數(shù)普通函數(shù)普通函數(shù)不使用運(yùn)算符的函數(shù)就是普通函數(shù)構(gòu)造函數(shù)普通函數(shù)從形式上看,一個函數(shù)被作為構(gòu)造函數(shù)還是普通函數(shù)執(zhí)行的唯一區(qū)別就是是否使用當(dāng)以調(diào)用構(gòu)造函數(shù)執(zhí)行時,函數(shù)

構(gòu)造函數(shù)

構(gòu)造函數(shù):如用函數(shù)用來初始化(使用new運(yùn)算符)一個新建的對象,我們稱之為構(gòu)造函數(shù)(constructor)

普通函數(shù)

普通函數(shù):不使用new運(yùn)算符的函數(shù)就是普通函數(shù)

構(gòu)造函數(shù)vs普通函數(shù)

從形式上看,一個函數(shù)被作為構(gòu)造函數(shù)還是普通函數(shù)執(zhí)行的唯一區(qū)別就是是否使用new

function Person(){
    this.name = "zqq";
    this.age = 28;
}
var p = new Person();

當(dāng)以new調(diào)用構(gòu)造函數(shù)(執(zhí)行var p = new Person())時,函數(shù)內(nèi)部會發(fā)生以下情況:

1.創(chuàng)建一個空對象

var p = {};

2.this變量指向?qū)ο髉

Person.call(p)

3.p繼承了構(gòu)造函數(shù)Person()的原型

p.__proto__ = Person.prototype

4.執(zhí)行構(gòu)造函數(shù)Person()內(nèi)的代碼

構(gòu)造函數(shù)和普通函數(shù)的區(qū)別:

1.構(gòu)造函數(shù)使用new關(guān)鍵字調(diào)用;普通函數(shù)不用new關(guān)鍵字調(diào)用;

var p = new Person();
var p = Person();

2.構(gòu)造函數(shù)內(nèi)部可以使用this關(guān)鍵字;普通函數(shù)內(nèi)部不建議使用this,因?yàn)檫@時候this指向的是window全局對象,這樣無意間就會為window添加了一些全局變量或函數(shù)

2.1 在構(gòu)造函數(shù)內(nèi)部,this指向的是構(gòu)造出來的新對象
2.2 在普通函數(shù)內(nèi)部,this指向的是window全局對象

3.構(gòu)造函數(shù)默認(rèn)不用return返回值;普通函數(shù)一般都有return返回值

3.1 構(gòu)造函數(shù)會默認(rèn)返回this,也就是新的實(shí)例對象

3.2 普通函數(shù)如果沒有return值的話,返回undefined

3.3 如果使用了return,那返回值會根據(jù)return值的類型而有所不同

(這里涉及到要了解的知識點(diǎn)有基本數(shù)據(jù)類型和引用類型的區(qū)別)

3.3.1 return的是五種簡單數(shù)據(jù)類型:String,Number,Boolean,Null,Undefined的話,構(gòu)造函數(shù)會忽略return的值,依然返回this對象;而普通函數(shù)會返回return后面的值

function Person(){
    var a;
    this.name = "zqq";
    this.age = 28;
    return a;
}
var p = new Person();//返回this對象
var p = Person();//因?yàn)閍沒初始化,所以a是undefined,而undefined屬于簡單數(shù)據(jù)類型,所以返回undefined,String,Number,Boolean,Null同理

3.3.2 如果return的是引用類型:Array,Date,Object,Function,RegExp,Error的話,構(gòu)造函數(shù)和普通函數(shù)都會返回return后面的值

function Person(){
    var arr = [];
    this.name = "zqq";
    this.age = 28;
    return arr;
}
var p = new Person();//返回arr空數(shù)組,Date,Object,Function,RegExp,Error同理
var p1 = new Person();//返回arr空數(shù)組,Date,Object,Function,RegExp,Error同理

4.構(gòu)造函數(shù)首字母建議大寫;普通函數(shù)首字母建議小寫

參考資料:
https://my.oschina.net/u/2395...
http://www.jb51.net/article/4...

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/86815.html

相關(guān)文章

  • function作為構(gòu)造函數(shù)構(gòu)造函數(shù)調(diào)用區(qū)別

    摘要:把這個執(zhí)行上下文壓入調(diào)用棧的頂部,即設(shè)置成運(yùn)行執(zhí)行上下文。函數(shù)作為構(gòu)造函數(shù)調(diào)用沒有繼承關(guān)系有繼承關(guān)系我們把一個函數(shù)被當(dāng)作構(gòu)造函數(shù),使用操作符調(diào)用時發(fā)生的主要步驟新建一個普通對象,把其原型指向構(gòu)造函數(shù)的屬性的值。把當(dāng)前執(zhí)行上下文彈出調(diào)用棧。 var currentTime = Date() 能生成一個當(dāng)前時間的日期對象,var currentTime = new Date() 也能生成一...

    didikee 評論0 收藏0
  • 關(guān)於Javascript中new運(yùn)算符,構(gòu)造函數(shù)與原型鏈一些理解

    摘要:前言文章主要基于高級程序設(shè)計總結(jié)的基本重寫了全文補(bǔ)充知識點(diǎn)新增實(shí)例優(yōu)化排版新增檢測方法技巧用法構(gòu)造函數(shù)創(chuàng)建一個用護(hù)定義的對象類型的實(shí)例或具有構(gòu)造函數(shù)的內(nèi)置對象類型之一命令執(zhí)行構(gòu)造函數(shù)返回一個實(shí)例對象構(gòu)造函數(shù)一個指定對象實(shí)例的類型的函數(shù)傳慘一 前言 文章主要基于>總結(jié)的!!!PS: 2018/05/09 基本重寫了全文,補(bǔ)充知識點(diǎn),新增實(shí)例,優(yōu)化排版PS: 2018/05/11 新增檢測...

    cikenerd 評論0 收藏0
  • js中箭頭函數(shù)普通函數(shù)區(qū)別

    摘要:不可以當(dāng)作構(gòu)造函數(shù),也就是說,不可以使用命令,否則會拋出一個錯誤。正是因?yàn)樗鼪]有,所以也就不能用作構(gòu)造函數(shù)。總結(jié)箭頭函數(shù)的永遠(yuǎn)指向其上下文的,任何方法都改變不了其指向,如普通函數(shù)的指向調(diào)用它的那個對象 一、前言 首先看下直觀的區(qū)別 // 箭頭函數(shù) let fun = () => { console.log(lalalala); } ...

    TerryCai 評論0 收藏0
  • 對,那是我夕陽下奔跑(剛過凌點(diǎn),‘思否’第一篇文章 小白開始認(rèn)真了 哈哈)

    摘要:我們將通過一個構(gòu)造函數(shù)創(chuàng)建的對象,稱為是該類的實(shí)例孫悟空男玉兔精女奔波霸男使用可以檢查一個對象是否是一個類的實(shí)例語法對象構(gòu)造函數(shù)如果是,則返回,否則返回所有的對象都是的后代,所以任何對象和做檢查時都會返回 使用對象字面量模式來創(chuàng)建一個對象 (它也叫單例模式 //JS與其他語言的單例模式有很大的區(qū)別(如Java),但這就是語言的區(qū)別) var obj = {}; ...

    vpants 評論0 收藏0
  • 靜態(tài)工廠方法替代構(gòu)造方法

    摘要:工廠方法模式工廠方法模式是一種設(shè)計模式,指的是讓具體的工廠對象負(fù)責(zé)生產(chǎn)具體的產(chǎn)品對象。在我們使用構(gòu)造函數(shù)創(chuàng)建對象的時候,我們每次時,都將創(chuàng)建一個新的對象,而如果我們通過靜態(tài)工廠方法時,我們可以返回系統(tǒng)中已存在的對象。 目錄: 普通構(gòu)造方法與靜態(tài)工廠方法 靜態(tài)工廠方法與設(shè)計模式中的工廠方法區(qū)別 靜態(tài)工廠方法的優(yōu)勢 靜態(tài)工廠方法的缺點(diǎn) 普通構(gòu)造方法與靜態(tài)工廠方法 普通構(gòu)造方法創(chuàng)建對象...

    浠ラ箍 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<