JavaScript函數(shù)窺探

JS的語(yǔ)法跟swift很像,以下代碼有幾個(gè)知識(shí)點(diǎn):

  1. 函數(shù)的定義
  2. 匿名函數(shù)的使用,作為參數(shù)/返回值,和OC的block,swift的閉包差不多。
  3. 變量的作用域:JS變量的作用域根據(jù)函數(shù)來(lái);OC變量的作用域根據(jù){}來(lái)
  4. 創(chuàng)建對(duì)象的兩種方式。
 <script>
    //1.1 加法運(yùn)算
    function sum(num1,num2) {
        return num1 + num2;
    }
    // 如何調(diào)用
    var result = sum(12,20);
    console.log(result)

    //1.2 萬(wàn)能的加法函數(shù)
    function sum2(numbers) {
        var result = 0;
        for(var i in numbers){
            result += numbers[i];
        }
        return result;
    }
    var result1 = sum2([3213,23,21,312,321,312,31]);
    console.log(result1);

    //1.3 匿名函數(shù) -- 相當(dāng)于OC中的Block -- 相當(dāng)于Swift中的閉包
   var res = function () {
        console.log('我是匿名函數(shù)');
    }
    //調(diào)用匿名函數(shù)
    function funct(block) {
        block();
    }
    funct(res);

    //JS中的閉包!!!
    function func1(num1) {
        return function (num2) {
            return num1 + num2;
        }
    }

    var temp = func1(4);
    var temp2 = temp(5);
    console.log(temp2);


    //作用域
    //代碼塊的作用域
    var t = 'hank'; //全局變量
    if(true){
        var t = 'Dream'; //JS中哥么還是一個(gè)全局變量!!
    }
    console.log(t);
    //函數(shù)的作用域
    function test() {
        var t = 'Jack';//里面就是局部變量!!!
    }
    test();
    console.log(t);
    

    //這是一種寫法
    var obj = new Object();//創(chuàng)建一個(gè)對(duì)象obj
    obj.age = 5;//給對(duì)象定義屬性
    obj.click = function () { //創(chuàng)建對(duì)象函數(shù)
        alert("我被單擊了");
    }

    //另一種寫法
    var obj1 = {
        age:5,
        click:function () {
            alert("我也被點(diǎn)擊了");
        }
    }
</script>

創(chuàng)建對(duì)象的這兩種方式都有個(gè)弊端,每次創(chuàng)建同類型的對(duì)象都要寫一樣的代碼,屬性越多重復(fù)代碼就越多,那怎么進(jìn)行抽象封裝?就要想到類,構(gòu)造函數(shù),像iOS中的構(gòu)造函數(shù)是alloc、init,那么JS的構(gòu)造函數(shù)要怎么創(chuàng)建呢??jī)刹饺缦拢?/p>

  1. 函數(shù)返回對(duì)象
  2. new 對(duì)象
 <script>
    //普通函數(shù)
    //new
    var Dog = function (name,age,height) {
        this.name = name;
        this.age = age;
        this.height = height;
        this.eat = function (someThing) {
            console.log(this.name + '吃'+someThing)
        };
        this.run = function (someWhere) {
            console.log(this.name + '跑'+someWhere)
        }
    }

   //創(chuàng)建對(duì)象
    var dog1 = new Dog('小黃',18,1.1)

    var dog2 = new Dog('旺財(cái)',17);
    console.log(dog1,dog2);
    dog1.eat('板燒雞腿堡')
    dog2.eat('叉燒包')

</script>

JS創(chuàng)建對(duì)象

<script>
    //1.創(chuàng)建對(duì)象
    var dog={
        name:'xiaohuang',
        age:18,
        height:1.2,
        dogFriends:['laifu','lisi'],
        eat:function (someThing) {
            console.log(this.name+'吃!'+someThing);
        },
        //this就是此函數(shù)屬于哪個(gè)對(duì)象,那么this就代表這個(gè)對(duì)象!
        run:function (where) {
            console.log(this.age+'跑'+where);
        }

    };//object
    console.log(dog.name,dog.age);
    dog.eat('板燒雞腿堡');
    dog.run('家里');

</script>
最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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