摘要:實例對象與構造函數的原型聯系是在創建實例時確定的,當創建后更改原型對象并不改變之前創建的實例所關聯的原型對象,新創建的使用新的原型對象。
再記面向對象 函數和對象的聯系
先理一下函數的功能:
創建:可以通過字面量創建
可以賦值給變量、數組作為成員和其他的對象作為屬性
作為函數的參數
作為返回值
自身可以添加屬性
在上面列出的函數功能對象皆具有
詳細函數介紹 為什么介紹函數?因為閉包、面向對象都需要與其有關,并且函數對于JavaScript的重要性則是無與倫比
函數創建的幾種方法:函數定義: 函數聲明和函數表達式(回調函數與其關系)
箭頭函數: es6增加(注意箭頭函數的this)
函數構造函數:new function ("a","b","return a+b");
生成器函數:
函數聲明和函數表達式
函數聲明:
函數聲明用function 開頭,并且函數名為強制存在,參數名可選,函數體用大括號{}包起來。
function square(number) { return number * number; }
注意函數名必須存在,這樣才可以被其他地方進行調用。函數可以在函數里聲明 ,[閉包]()與此有關。
函數表達式:
函數表達式則是可以被用來作為參數、作為返回值。可以快速的被創建使用。
var fn = function() { console.log("hello world") } fn() function outPut (callback) { callback() } outPut(fn)
函數名不是必須的
箭頭函數
function getName (name) { return (function(j) { return j })(name) } var showName = getName("kangkang") console.log(showName)
下面改寫為箭頭函數形式
function getName (name) { return (j=>j)(name) } var showName = getName("kangkang") console.log(showName)
遵循 參數=>被返回的表達式的值、(p,b)=>p+b相當于function(p,b){return p+b},也可以使用代碼塊進行必要的操作,此時需要顯示表明return的值。
調用函數:函數的調用,定義一個函數并不會執行它,需要調用。在調用時,你需要給定可選的參數,如果參數為空則無需給定。函數聲明的提升可以讓函數不在頂層被聲明。
一個需要注意的地方 函數提升僅適用于函數聲明,而不適用于函數表達式。
具體函數的調用在this上的改變令人捉摸不透,我也寫了篇筆記 [this何時為何值?]()待添加
原型鏈:每個對象(函數)具有一個原型屬性,指向可以被實例共享的屬性和方法。而原型鏈在尋找某個屬性時體現的比較清楚:
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() // 對于three1來說并沒有output這個方法,就是通過原型鏈這個鏈進行一層一層尋找的重寫對象原型引起的問題
在構造函數創建新的實例后依然可以添加新的原型屬性和方法并且可以被訪問到,但是如果重寫整個原型對象的話,就需要注意了。實例對象與構造函數的原型聯系是在創建實例時確定的,當創建后更改原型對象并不改變之前創建的實例所關聯的原型對象,新創建的使用新的原型對象。
constructor屬性指向創建實例的函數
個人學習備忘,如有謬誤,歡迎指正。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/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...
摘要:使用好久了,好像今天才想起來要記一篇博客呢。之前一直用的框架,后來做接口的時候打算換成不料機緣巧合之下又結識了,于是乎決然的站到了的大營之下。今天小記一下這個類庫的常用操作。首先貼上地址,直接去下載最新版好了。 PHP使用好久了,好像今天才想起來要記一篇博客呢。之前一直用的 ci 框架,后來做接口的時候打算換成 tp5, 不料機緣巧合之下又結識了 node,于是乎決然的站到了 js 的...
摘要:針對一些想寫博客提升能力,但是很迷茫不知道怎么開始的同學,我會盡我所能給出一些建議。它允許人們使用易讀易寫的純文本格式編寫文檔,然后轉換成有效的或者文檔。 目錄 ...
閱讀 1534·2023-04-26 02:50
閱讀 3535·2023-04-26 00:28
閱讀 1931·2023-04-25 15:18
閱讀 3209·2021-11-24 10:31
閱讀 986·2019-08-30 13:00
閱讀 1000·2019-08-29 15:19
閱讀 1766·2019-08-29 13:09
閱讀 2975·2019-08-29 13:06