成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

function應(yīng)用技巧

Cruise_Chan / 1447人閱讀

摘要:四函數(shù)的屬性函數(shù)的屬性列表這個(gè)屬性先略過(guò)上述的屬性都可以通過(guò)函數(shù)名屬性來(lái)引用,是形參的個(gè)數(shù)。如果是函數(shù)表達(dá)式的話,是空串??创a注意嚴(yán)格模式下不能訪問(wèn)對(duì)象的屬性

一、new function的用法

1.用法一

此種用法的跟使用{}的區(qū)別是:它比較靈活,可以在內(nèi)部定義變量、函數(shù)等

var obj = new function(){
   var a = 1; 
   var b = 2;
   this.total = a + b;
   return a + b; // 被忽略
}

相當(dāng)于:

 var obj = {
   total : 3
 }

2.用法二

此種用法就是閉包而已

var test = new function(){

   var a = 1;
   var b = 2;

   return function(c){
      return a + b + c;
   }

}

test(3);//6

相當(dāng)于:

var test = (function(){

   var a = 1;
   var b = 2;

   return function(c){
      return a + b + c;
   }

})();

test(3);//6
二、Function.prototype.apply.call的用法
function log(){
   if(window.console){
         // 第一個(gè)參數(shù)是apply要執(zhí)行的函數(shù),第二個(gè)參數(shù)為context,第三個(gè)參數(shù)為要執(zhí)行函數(shù)的參數(shù)列表
         Function.prototype.apply.call(console.log,console,arguments);
         // Function.apply.call(console.log,console,arguments); // 也是可以的。
   }
}
三、構(gòu)造函數(shù)中return

1.構(gòu)造函數(shù)return基本類型的值

function Person(){

   var a = 2;

   this.a = a;

   return a;

}

var p = new Person();

console.dir(p); // 此時(shí)p的值并不是2,而是一個(gè)有一個(gè)屬性a其值為2的對(duì)象

2.構(gòu)造函數(shù)return Object類型的值

function Person(){

    var a = 2

    return {

       name:"李彥峰",
       a : a

    }

}
var p = new Person();

console.dir(p); // 此時(shí)p為一個(gè)對(duì)象 {name:"李彥峰",a:2}

結(jié)論:

在構(gòu)造器中 return ,如果是基本類型的值,那么使用 new 操作符將會(huì)按照預(yù)期,返回一個(gè)對(duì)象,就相當(dāng)于構(gòu)造函數(shù)中的 return 語(yǔ)句不存在一樣

在構(gòu)造器中如果 return 的是一個(gè)Object類型(function/基本類型的包裝類型/Object類型),那么 new 操作符就相當(dāng)于不存在一樣,也就是說(shuō),js引擎會(huì)把 return 出去的引用值作為變量,而不會(huì)把 new 出來(lái)的新對(duì)象的引用賦值給相應(yīng)的變量。。

四、函數(shù)的屬性

函數(shù)的屬性列表

arguments

caller

length

name

prototype(這個(gè)屬性先略過(guò))

上述的屬性都可以通過(guò) 函數(shù)名.屬性來(lái)引用,length是形參的個(gè)數(shù)。如果是函數(shù)表達(dá)式的話,name是空串。

function outer(a,b,c){
    console.log(outer.arguments); // [1,2,3,4]
    console.log(outer.caller); // null
    console.log(outer.length); // 3
    console.log(outer.name); // outer
    function inner(){
        console.log(inner.arguments); // []
        console.log(inner.caller); // 打印出整個(gè)函數(shù)體
        console.log(inner.length); // 0
        console.log(inner.name); // inner
 
        // 內(nèi)部函數(shù)訪問(wèn)外部函數(shù)的屬性    
        console.log(arguments.callee.caller.arguments); // [1,2,3,4]
        // console.log(inner.caller.arguments);  // [1,2,3,4]
        console.log(arguments.callee.caller.caller); // null
        // console.log(inner.caller.caller); // null
        console.log(arguments.callee.caller.length); // 3
        // console.log(inner.caller.length); // 3
        console.log(arguments.callee.caller.name); // outer
        // console.log(inner.caller.name); // outer
    }
    inner();
}
outer(1,2,3,4);
五、局部變量

對(duì)于局部聲明的重復(fù)變量,只有第一個(gè)聲明有效,也就是說(shuō),js引擎會(huì)忽略除了第一個(gè)之外的所有的聲明

 
 // 第一種
 function test(){
   
     var name = "李彥峰";
     var name; 
     console.log(name); // 李彥峰

 }

 // 第二種
 function test(){
    
     var name;
     var name = "李彥峰";
     console.log(name); // 李彥峰
    
 }

注意:第二種好像不符合 對(duì)于局部聲明的重復(fù)變量,只有第一個(gè)聲明有效的說(shuō)法,其實(shí)也是符合的,因?yàn)閖s引擎會(huì)對(duì)函數(shù)進(jìn)行2輪處理,局部變量的聲明在第1輪處理(變量聲明提升),所以第1輪會(huì)保證只有一個(gè)name被聲明,第2輪才進(jìn)行局部變量的初始化(代碼執(zhí)行到賦值語(yǔ)句才進(jìn)行初始化),即會(huì)把第1輪聲明的局部變量賦值。。

嚴(yán)格模式下不能通過(guò)函數(shù)名.arguments的方式訪問(wèn)arguments對(duì)象,不能訪問(wèn)caller屬性

六、arguments

arguments對(duì)象擁有一個(gè)callee屬性,該屬性是一個(gè)指針,指向擁有這個(gè)arguments對(duì)象的函數(shù)

arguments對(duì)象內(nèi)部屬性值是跟參數(shù)一一對(duì)應(yīng)的,改變其中一個(gè)的值都會(huì)影響另外一個(gè)。

看代碼:

function test(a,b,c){
    console.log(arguments); // [1,2,4]
    a = 8;
    console.log(arguments); // [8,2,4]
    arguments[1] = 909;
    console.log(b); // 909
    console.log(arguments); // [8,909,4]
}
test(1,2,4);

注意:嚴(yán)格模式下不能訪問(wèn)arguments對(duì)象的callee屬性

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/78958.html

相關(guān)文章

  • 函數(shù)式編程中局部應(yīng)用(Partial Application)和局部套用(Currying)的區(qū)別

    摘要:真正留給我們要實(shí)現(xiàn)的僅僅是返回另外一部分用于局部應(yīng)用的一元函數(shù)罷了??偨Y(jié)各用一句話做個(gè)小結(jié)吧局部應(yīng)用是一種轉(zhuǎn)換技巧,通過(guò)預(yù)先傳入一個(gè)或多個(gè)參數(shù)來(lái)把多元函數(shù)轉(zhuǎn)變?yōu)楦僖恍┰暮瘮?shù)甚或是一元函數(shù)。 局部應(yīng)用(Partial Application,也譯作偏應(yīng)用或部分應(yīng)用)和局部 套用( Currying, 也譯作柯里化),是函數(shù)式編程范式中很常用的技巧。 本文著重于闡述它們的...

    AaronYuan 評(píng)論0 收藏0
  • 【譯】使用 AngularJS 和 Electron 構(gòu)建桌面應(yīng)用

    摘要:原文的框架以前叫做允許你使用和編寫跨平臺(tái)的桌面應(yīng)用。這個(gè)教程向我們展示了如何使用和構(gòu)建一個(gè)桌面應(yīng)用。我們的應(yīng)用看起來(lái)會(huì)是這個(gè)樣子配置開(kāi)發(fā)環(huán)境是微軟的一款跨平臺(tái)代碼編輯器。是基于和微軟自身的開(kāi)發(fā)的。我們需要用我們最終構(gòu)建的應(yīng)用來(lái)替換它。 原文:Creating Desktop Applications With AngularJS and GitHub Electron showImg(...

    maxmin 評(píng)論0 收藏0
  • 使用 Electron 自定義菜單

    摘要:使用自定義菜單此系列文章的應(yīng)用示例已發(fā)布于可以或下載后運(yùn)行查看歡迎使用和模塊可用于創(chuàng)建自定義本地菜單有兩種菜單應(yīng)用程序頂部菜單和上下文右鍵單擊菜單在瀏覽器中打開(kāi)完整的文檔創(chuàng)建應(yīng)用程序菜單支持進(jìn)程使用和模塊可以自定義你的應(yīng)用程序菜單如果 使用 Electron 自定義菜單 此系列文章的應(yīng)用示例已發(fā)布于 GitHub: electron-api-demos-Zh_CN. 可以 Clone ...

    MageekChiu 評(píng)論0 收藏0
  • 5分鐘快速集成UCloud實(shí)時(shí)音視頻服務(wù)URTC-Electron端

    摘要:通過(guò)集成,可以從零開(kāi)始,快速搭建出實(shí)時(shí)音視頻通信平臺(tái),可以應(yīng)用于語(yǔ)音和視頻社交在線教育和培訓(xùn)遠(yuǎn)程醫(yī)療在線會(huì)議直播等多種業(yè)務(wù)場(chǎng)景。集成之前,需要在官網(wǎng)控制臺(tái)創(chuàng)建應(yīng)用。使用服務(wù)之前,首先需要注冊(cè)賬號(hào)并且完成實(shí)名認(rèn)證。確定后,自動(dòng)生成。通過(guò)集成URTC SDK,可以從零開(kāi)始,快速搭建出實(shí)時(shí)音視頻通信平臺(tái),可以應(yīng)用于語(yǔ)音和視頻社交、在線教育和培訓(xùn)、遠(yuǎn)程醫(yī)療、在線會(huì)議、直播等多種業(yè)務(wù)場(chǎng)景。 集成URT...

    Tecode 評(píng)論0 收藏0

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

0條評(píng)論

閱讀需要支付1元查看
<