成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

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

Airmusic / 2094人閱讀

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

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

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

普通函數(shù)

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

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

從形式上看,一個(gè)函數(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í),函數(shù)內(nèi)部會(huì)發(fā)生以下情況:

1.創(chuàng)建一個(gè)空對(duì)象

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)檫@時(shí)候this指向的是window全局對(duì)象,這樣無意間就會(huì)為window添加了一些全局變量或函數(shù)

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

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

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

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

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

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

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

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

3.3.2 如果return的是引用類型:Array,Date,Object,Function,RegExp,Error的話,構(gòu)造函數(shù)和普通函數(shù)都會(huì)返回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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/86815.html

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

    浠ラ箍 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<