摘要:實(shí)例對(duì)象與構(gòu)造函數(shù)的原型聯(lián)系是在創(chuàng)建實(shí)例時(shí)確定的,當(dāng)創(chuàng)建后更改原型對(duì)象并不改變之前創(chuàng)建的實(shí)例所關(guān)聯(lián)的原型對(duì)象,新創(chuàng)建的使用新的原型對(duì)象。
再記面向?qū)ο?/b> 函數(shù)和對(duì)象的聯(lián)系
先理一下函數(shù)的功能:
創(chuàng)建:可以通過字面量創(chuàng)建
可以賦值給變量、數(shù)組作為成員和其他的對(duì)象作為屬性
作為函數(shù)的參數(shù)
作為返回值
自身可以添加屬性
在上面列出的函數(shù)功能對(duì)象皆具有
詳細(xì)函數(shù)介紹 為什么介紹函數(shù)?因?yàn)殚]包、面向?qū)ο蠖夹枰c其有關(guān),并且函數(shù)對(duì)于JavaScript的重要性則是無與倫比
函數(shù)創(chuàng)建的幾種方法:函數(shù)定義: 函數(shù)聲明和函數(shù)表達(dá)式(回調(diào)函數(shù)與其關(guān)系)
箭頭函數(shù): es6增加(注意箭頭函數(shù)的this)
函數(shù)構(gòu)造函數(shù):new function ("a","b","return a+b");
生成器函數(shù):
函數(shù)聲明和函數(shù)表達(dá)式
函數(shù)聲明:
函數(shù)聲明用function 開頭,并且函數(shù)名為強(qiáng)制存在,參數(shù)名可選,函數(shù)體用大括號(hào){}包起來。
function square(number) { return number * number; }
注意函數(shù)名必須存在,這樣才可以被其他地方進(jìn)行調(diào)用。函數(shù)可以在函數(shù)里聲明 ,[閉包]()與此有關(guān)。
函數(shù)表達(dá)式:
函數(shù)表達(dá)式則是可以被用來作為參數(shù)、作為返回值??梢钥焖俚谋粍?chuàng)建使用。
var fn = function() { console.log("hello world") } fn() function outPut (callback) { callback() } outPut(fn)
函數(shù)名不是必須的
箭頭函數(shù)
function getName (name) { return (function(j) { return j })(name) } var showName = getName("kangkang") console.log(showName)
下面改寫為箭頭函數(shù)形式
function getName (name) { return (j=>j)(name) } var showName = getName("kangkang") console.log(showName)
遵循 參數(shù)=>被返回的表達(dá)式的值、(p,b)=>p+b相當(dāng)于function(p,b){return p+b},也可以使用代碼塊進(jìn)行必要的操作,此時(shí)需要顯示表明return的值。
調(diào)用函數(shù):函數(shù)的調(diào)用,定義一個(gè)函數(shù)并不會(huì)執(zhí)行它,需要調(diào)用。在調(diào)用時(shí),你需要給定可選的參數(shù),如果參數(shù)為空則無需給定。函數(shù)聲明的提升可以讓函數(shù)不在頂層被聲明。
一個(gè)需要注意的地方 函數(shù)提升僅適用于函數(shù)聲明,而不適用于函數(shù)表達(dá)式。
具體函數(shù)的調(diào)用在this上的改變令人捉摸不透,我也寫了篇筆記 [this何時(shí)為何值?]()待添加
原型鏈:每個(gè)對(duì)象(函數(shù))具有一個(gè)原型屬性,指向可以被實(shí)例共享的屬性和方法。而原型鏈在尋找某個(gè)屬性時(shí)體現(xiàn)的比較清楚:
function one () { this.value = 1 } one.prototype.output = function() { console.log(this.value) } function two () { this.value = 2 } function three () { this.value = 3 } two.prototype = Object.create(one.prototype) three.prototype = Object.create(two.prototype) var one1 = new one() var two1 = new two() var three1 = new three() three1.output() // 對(duì)于three1來說并沒有output這個(gè)方法,就是通過原型鏈這個(gè)鏈進(jìn)行一層一層尋找的重寫對(duì)象原型引起的問題
在構(gòu)造函數(shù)創(chuàng)建新的實(shí)例后依然可以添加新的原型屬性和方法并且可以被訪問到,但是如果重寫整個(gè)原型對(duì)象的話,就需要注意了。實(shí)例對(duì)象與構(gòu)造函數(shù)的原型聯(lián)系是在創(chuàng)建實(shí)例時(shí)確定的,當(dāng)創(chuàng)建后更改原型對(duì)象并不改變之前創(chuàng)建的實(shí)例所關(guān)聯(lián)的原型對(duì)象,新創(chuàng)建的使用新的原型對(duì)象。
constructor屬性指向創(chuàng)建實(shí)例的函數(shù)
個(gè)人學(xué)習(xí)備忘,如有謬誤,歡迎指正。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/94391.html
2016/04/29 02:36:36 [error] 12717#0: *122075 FastCGI sent in stderr: Primary script unknown while reading response header from upstream, client: 127.0.0.1, server: xxxxxxxx, request: GET / HTTP/1.1, u...
2016/04/29 02:36:36 [error] 12717#0: *122075 FastCGI sent in stderr: Primary script unknown while reading response header from upstream, client: 127.0.0.1, server: xxxxxxxx, request: GET / HTTP/1.1, u...
摘要:使用好久了,好像今天才想起來要記一篇博客呢。之前一直用的框架,后來做接口的時(shí)候打算換成不料機(jī)緣巧合之下又結(jié)識(shí)了,于是乎決然的站到了的大營之下。今天小記一下這個(gè)類庫的常用操作。首先貼上地址,直接去下載最新版好了。 PHP使用好久了,好像今天才想起來要記一篇博客呢。之前一直用的 ci 框架,后來做接口的時(shí)候打算換成 tp5, 不料機(jī)緣巧合之下又結(jié)識(shí)了 node,于是乎決然的站到了 js 的...
摘要:針對(duì)一些想寫博客提升能力,但是很迷茫不知道怎么開始的同學(xué),我會(huì)盡我所能給出一些建議。它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉(zhuǎn)換成有效的或者文檔。 目錄 ...
摘要:用正則表達(dá)式語言創(chuàng)建的。匹配非數(shù)字的字符使用元字符元字符在正則表達(dá)式中有特殊含義的字符。正則表達(dá)式默認(rèn)是區(qū)別大小寫的。正則表達(dá)式的字符串表示。若是一個(gè)正則表達(dá)式,若有標(biāo)志則替換所有匹配之處,若沒有則只替換第一個(gè)匹配之處。 前言 好久之前就說要寫一篇正則表達(dá)式的文章,正則表達(dá)式總是記了又忘,忘了再記,記了再忘,卒。言歸正傳,今天終于要研究一下這個(gè)謎一樣的正則表達(dá)式了。其實(shí)正則表達(dá)式并不難...
閱讀 1581·2023-04-26 02:50
閱讀 3581·2023-04-26 00:28
閱讀 1962·2023-04-25 15:18
閱讀 3246·2021-11-24 10:31
閱讀 1029·2019-08-30 13:00
閱讀 1028·2019-08-29 15:19
閱讀 1801·2019-08-29 13:09
閱讀 3008·2019-08-29 13:06