摘要:通過(guò)函數(shù)聲明定義的函數(shù),其是后的標(biāo)識(shí)符通過(guò)函數(shù)表達(dá)式定義的函數(shù),其是空字符串。。函數(shù)內(nèi)部的類數(shù)組對(duì)象,包含傳入函數(shù)中的所有參數(shù)。返回實(shí)際傳入函數(shù)的參數(shù)個(gè)數(shù)。這個(gè)過(guò)程有四個(gè)步驟創(chuàng)建空對(duì)象使的指向構(gòu)造函數(shù)的原型以作為構(gòu)造函數(shù)的上下文調(diào)用。
函數(shù)屬性
name。Firefox、Safari、Chrome、Opera支持這個(gè)非標(biāo)準(zhǔn)屬性。通過(guò)函數(shù)聲明定義的函數(shù),其name是function后的標(biāo)識(shí)符;通過(guò)函數(shù)表達(dá)式定義的函數(shù),其name是空字符串。
var a = function() {}; var b = new Function(); function c() {} console.log(a.name); //"" console.log(b.name); //anonymous console.log(c.name); //c
prototype。函數(shù)原型。
length。返回定義函數(shù)的參數(shù)個(gè)數(shù)。
var a = function(){}; function b(i) {return i;} console.log(a.length); //0 console.log(b.length); //1
arguments。函數(shù)內(nèi)部的類數(shù)組對(duì)象,包含傳入函數(shù)中的所有參數(shù)??梢酝ㄟ^(guò)數(shù)組下標(biāo)的方式訪問(wèn)傳入函數(shù)里的每一個(gè)參數(shù)。arguments.length返回實(shí)際傳入函數(shù)的參數(shù)個(gè)數(shù)。
function add() { var _length = arguments.length; var _init = 0; for (var i=0; i<_length; i++) { _init += arguments[i]; } return _init; } add(1,2,3,4); //10
callee和caller。
function outer() { function inner(){ console.log(arguments.callee.name); //inner console.log(arguments.callee.caller.name); //outer } inner(); } outer();
this函數(shù)內(nèi)部屬性。this指的是誰(shuí)?了解更多。
函數(shù)方法
apply()和call()
function sum(num1, num2) { return num1 + num2; } function anotherSum(num1, num2) { return sum.apply(this, arguments); } function yetAnotherSum(num1, num2) { return sum.call(this, num1, num2); } console.log(sum(1,2)); //3 console.log(anotherSum(1,2)); //3 console.log(yetAnotherSum(1,2)); //3
bind()
var window.color = "red"; var o = {color:"blue"}; function sayColor() { return this.color; } console.log(sayColor()); //red var sayOColor = sayColor.bind(o); console.log(sayOColor()); //blue
函數(shù)聲明提升,使其在加載作用域數(shù)據(jù)之前(編譯階段)可用。
//變量聲明提升 console.log(a); //undefined var a = 1; console.log(a); //1 //這個(gè)過(guò)程相當(dāng)于 var a; console.log(a); a = 1; console.log(a); //函數(shù)聲明會(huì)覆蓋同名變量聲明 console.log(typeof x); //function function x() {} var x;
若傳入函數(shù)的參數(shù)如果是基本類型值,函數(shù)操作的是這個(gè)參數(shù)的副本;若參數(shù)是對(duì)象,該參數(shù)只是這個(gè)對(duì)象的引用,函數(shù)操作的是對(duì)象本身。
var a = 1; var b = {value: 1}; function add(x) { (typeof x === "number") ? (x++) : (x.value++); }; add(a); add(b); console.log(a); //1 console.log(b.value); //2
new這個(gè)過(guò)程有四個(gè)步驟
// new Func(); var obj = {}; //1.創(chuàng)建空對(duì)象 obj.__proto__ = Func.prototype; //2.使obj的__prototype__指向構(gòu)造函數(shù)的原型 var ret = Func.call(obj); //3.以obj作為構(gòu)造函數(shù)的上下文調(diào)用Func。在為實(shí)例構(gòu)造屬性之前,屬性值為undefined。 if (typeof ret == "object") { //4.如果返回的是對(duì)象,就會(huì)覆蓋構(gòu)造的實(shí)例;否則會(huì)忽略返回的基本類型值。 return ret; } else { return obj; }
轉(zhuǎn)載請(qǐng)注明出處:https://segmentfault.com/a/1190000004579488
文章不定期更新完善,如果能對(duì)你有一點(diǎn)點(diǎn)啟發(fā),我將不勝榮幸。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/78851.html
摘要:實(shí)際上官方給出的單線程是具有誤導(dǎo)性的。如果開發(fā)者在回調(diào)函數(shù)中調(diào)用了阻塞方法比如上文中的函數(shù),那么整個(gè)事件輪詢就會(huì)阻塞,事件隊(duì)列中的事件得不到及時(shí)處理。后記參考文章事件輪詢?cè)斒? 前言 總括 : 原文地址:理解Node.js的事件輪詢 Node小應(yīng)用:Node-sample 智者閱讀群書,亦閱歷人生 正文 Node.js的兩個(gè)基本概念 Node.js的第一個(gè)基本概念就是I/O操作開銷是...
摘要:改寫視圖函數(shù)上一章我們感受了視圖的工作流程。循壞表示依次取出中的元素,命名為,并分別執(zhí)行接下來(lái)操作。即為語(yǔ)言,中間包裹了一個(gè)段落的文字。有疑問(wèn)請(qǐng)?jiān)诙刨惖膫€(gè)人網(wǎng)站留言,我會(huì)盡快回復(fù)。 改寫視圖函數(shù) 上一章我們感受了視圖的工作流程。 為了讓視圖真正發(fā)揮作用,改寫article/views.py中的article_list視圖函數(shù): article/views.py from django...
摘要:前言這一講將介紹一下序列化機(jī)制和過(guò)程函數(shù)。然而由于的類型擦除,自動(dòng)提取并不是總是有效。開發(fā)者在自定義類上使用注解,隨后創(chuàng)建相應(yīng)的并覆蓋方法。 前言 這一講將介紹一下序列化機(jī)制和過(guò)程函數(shù)(processfunction)。 序列化機(jī)制 使用 Flink 編寫處理邏輯時(shí),新手總是容易被林林總總的概念所混淆: 為什么 Flink 有那么多的類型聲明方式? BasicTypeInfo.ST...
摘要:之前做過(guò)一個(gè)用到了消息推送,最近這個(gè)項(xiàng)目又用到了推送。限制命名長(zhǎng)度限制為字節(jié)判斷長(zhǎng)度需采用編碼。參考文獻(xiàn)插件文檔極光推送文檔 前言 說(shuō)一下寫這篇文章的初衷。之前做過(guò)一個(gè)APP用到了消息推送,最近這個(gè)項(xiàng)目又用到了推送。但是由于兩個(gè)項(xiàng)目間隔4個(gè)多月,推送集成、使用方式等都忘了,所以當(dāng)時(shí)又去看了以前項(xiàng)目的源碼和一些推送相關(guān)的博客,尋找那些蛛絲馬跡。突然覺(jué)得這樣很浪費(fèi)時(shí)間,為何自己不寫篇文章總...
摘要:比如對(duì)于空操作空控制器,你會(huì)暴露給給黑客你網(wǎng)站后臺(tái)所用的框架,黑客會(huì)根據(jù)框架本省的漏洞對(duì)你網(wǎng)站進(jìn)行攻擊。因此,我們需要對(duì)空控制器空操作進(jìn)行處理,不給黑客留下任何蛛絲馬跡。好啦,空操作空控制器就先說(shuō)到這里 當(dāng)一個(gè)高手瀏覽你的網(wǎng)站的時(shí)候,你網(wǎng)站的報(bào)錯(cuò)信息將給黑客提供攻擊你網(wǎng)站的信息。比如對(duì)于空操作、空控制器,你會(huì)暴露給給黑客你網(wǎng)站后臺(tái)所用的框架,黑客會(huì)根據(jù)框架本省的漏洞對(duì)你網(wǎng)站進(jìn)行攻擊。因...
閱讀 1028·2021-11-24 10:42
閱讀 3579·2021-11-19 11:34
閱讀 2728·2021-09-29 09:35
閱讀 2611·2021-09-09 09:33
閱讀 753·2021-07-26 23:38
閱讀 2591·2019-08-30 10:48
閱讀 1455·2019-08-28 18:07
閱讀 482·2019-08-26 13:44