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