一、閉包安全
定義來源1:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Closures
定義自己1:內部函數能夠訪問外部函數做用域,外部函數不能直接訪問內部函數的做用域,即函數內部不會受外部干擾。函數的這種機制叫作閉包。閉包
定義來源2:《JavaScript高級程序設計》第178頁
定義自己2:有權(能夠)訪問另外一個函數做用域中的變量的函數。函數
閉包的特徵:函數中的函數prototype
好處:閉包能夠做爲返回值被函數外部的變量引用,這樣函數外部就能夠訪問函數內部的變量,減小全局變量。
壞處:致使函數的做用域不能釋放,佔用內存。設計
二、高階函數
定義:操做其餘函數的函數,好比map、forEach3d
三、關於重載對象
Java能夠爲一個函數定義兩個定義,只要這兩個定義的簽名(參數的類型和數量)不一樣便可。JS沒有簽名,因此不能重載。繼承
四、多態ip
同一操做做用於不一樣的對象上面,能夠產生不一樣的執行結果。好比你說「叫」,鴨子聽了會發出「嘎嘎聲」,雞聽了會發出「咯咯聲」。內存
五、原型鏈
var obj = {}
function fn(){}
//一、對象與函數的原型
obj.__proto__ === Object.prototype;
fn.__proto__ === Function.prototype;
fn.prototype={};
fn.prototype.__proto__ === Object.prototype
Drag.prototype.__proto__=EventEmitter.prototype;//這是更安全的繼承方法,通常在Node裏都是採用這種方式實現繼承。IE不支持
Drag.prototype=new EventEmitter;//相對這種方式來講,上邊的寫法更安全
//二、對象類與函數類的原型
Object.prototype={};
Object.prototype.__proto__ === null;
Function.prototype={};
Function.prototype.__proto__ === Object.prototype
//三、對象類與函數類所在類的原型
Object.__proto__ === Function.prototype
Function.__proto__ === Function.prototype
//https://www.jianshu.com/p/686b61c4a43d
六、5的自裁題
obj.__proto__ =
fn.__proto__ =
fn.prototype=
fn.prototype.__proto__ =
Object.prototype=
Object.prototype.__proto__ =
Function.prototype=
Function.prototype.__proto__ =
Object.__proto__ =Function.__proto__ =