js函數(shù)總結(jié)

一聲明:
函數(shù)聲明,存在聲明提升
函數(shù)表達(dá)式

二內(nèi)部對(duì)象:
每個(gè)函數(shù)都有this,argments兩個(gè)對(duì)象。
apply call bind 內(nèi)部方法
參數(shù)傳遞是值傳遞

三執(zhí)行環(huán)境:
1:作用域 =>保存當(dāng)前和父環(huán)境活動(dòng)對(duì)象的指針數(shù)組
2:活動(dòng)對(duì)象=>argments,聲明的變量
3:this=>動(dòng)態(tài)改變

四閉包:
訪問(wèn)函數(shù)內(nèi)部私有變量
延遲變量聲明周期,
模仿塊級(jí)作用域,
共享變量。
形式1:

function f() {
    var arr = [];
    for (var i=0;i<10;i++){
       arr[i] = function () {
          console.log(i);//訪問(wèn)函數(shù)內(nèi)部私有變量
       }
    }
   return arr;
}
var arr = f();
console.log("arr",arr[7]()); //10

形式2:

function f() {
    var arr = [];
    for (var i=0;i<10;i++){
       arr[i] = function (index) {//訪問(wèn)函數(shù)內(nèi)部私有變量 延遲儲(chǔ)存變量i
           return function () {
               console.log(index);
           }
       }(i)
    }
   return arr;
}
var arr = f();
console.log("arr",arr[7]()); //7

形式3:

function f() {
    var count = 5;
    (function () {//模仿塊級(jí)作用域,
        for(var i=0;i<count;i++){//訪問(wèn)函數(shù)內(nèi)部私有變量
            console.log(i)
        }
    })()
}

形式4:

(function () {
    var name = "wyq";
    Person = function () {}//作為類使用
    Person.prototype.setName=function (n) {
        name = n;
    };
    Person.prototype.getName = function () {
        return name;
    }
})();
/**
 * 代碼作用:
 * 1:聲明一個(gè)Person類
 * 2:初始化Person原型添加setName,getName方法
 * 3:模仿塊級(jí)作用域
 * 4:通過(guò)閉包的方式在Person類外面嵌套一個(gè)匿名函數(shù),使Person可以訪問(wèn)name屬性
 * 5:所有Person實(shí)例共享name屬性,適合單例使用*/

五函數(shù)是什么:
函數(shù)是對(duì)象
函數(shù)是方法
函數(shù)是類
函數(shù)是函數(shù)

function MyObject() {
    var name ="wyq";
    function getName() {//私有函數(shù)
        return name;
    }
    this.publicMethod = function () {//公有方法
        return getName();
    }
    this.age = 'asd'//公有屬性 是對(duì)象
}

var obj = new MyObject();//函數(shù)是類
console.log('obj.age',obj.age)
console.log('obj.age',obj.publicMethod())

js函數(shù)為什么沒(méi)有重載?
因?yàn)楹瘮?shù)的本質(zhì)是一種對(duì)象,函數(shù)名字重復(fù)相當(dāng)于變量的重新賦值。

function MyObject() {
    var name ="wyq";
    console.log('name',name);
}
等價(jià)于:
var MyObject = function () {
    var name ="wyq";
    console.log('name',name);
}

所以同名函數(shù)如下:
function MyObject() {
    console.log('hello');
}
var MyObject = function () {
  console.log('hello');
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù)和對(duì)象 1、函數(shù) 1.1 函數(shù)概述 函數(shù)對(duì)于任何一門語(yǔ)言來(lái)說(shuō)都是核心的概念。通過(guò)函數(shù)可以封裝任意多條語(yǔ)句,而且...
    道無(wú)虛閱讀 4,926評(píng)論 0 5
  • 很久沒(méi)來(lái)簡(jiǎn)書(shū)了,只是一直心里惦記著最近少讀書(shū),所以剛巧在愚人節(jié)這天重新登錄賬號(hào)。 現(xiàn)在回看之前的筆記覺(jué)得倍感青澀,...
    jewelduan閱讀 309評(píng)論 0 0
  • Let's be much more 順風(fēng)順?biāo)?on both love & career~……
    帶風(fēng)走路deFENG閱讀 164評(píng)論 0 1
  • 作者:禹明明,叩丁狼高級(jí)講師。原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處。 看此文章前請(qǐng)先了解之前一篇文章 "Java死鎖之理解死鎖...
    叩丁狼教育閱讀 935評(píng)論 1 0

友情鏈接更多精彩內(nèi)容