立即執(zhí)行函數(shù)
(function () {
console.log(111)
})()
函數(shù)提升和變量提升
var a = 12;
(function () {
var a = 13;
function a(){
}
console.log(a)//13
})()
//function 聲明在變量之前
閉包
//閉包形式
function out(){
var a = 12;
function inside(){
a++;
console.log(a)
}
return inside;
}
var global = out();
global()//13
global()//14
//閉包概念 函數(shù)被調(diào)用在他所在的詞法作用域之外,保留了對(duì)原詞法作用域的引用,形成了閉包
//好處 模塊化開(kāi)發(fā) 實(shí)現(xiàn)私有變量 避免全局變量的污染
//缺點(diǎn) 造成內(nèi)存泄漏 需要將引用變量 = null
this
var a = 13;
var test = {
a :12,
init:function (argument) {
console.log(this.a)
}
}
test.init()//12 this指向test
var global = test.init;
global()//13 this指向window
//this 指針 誰(shuí)調(diào)用指向誰(shuí)
//改變this指針 call apply bind
//call 參數(shù)直接彼水,翔曲,螟加, apply 參數(shù)數(shù)組 bind返回新函數(shù) this不能再被改變 未執(zhí)行
原型鏈實(shí)現(xiàn)繼承
function Person(name){
this.name = name;
}
Person.prototype.speak = function(){
console.log("我叫"+this.name)
}
function Student(){
Person.call(this);
}
Student.prototype = Object.caeate(Person.prototype)
Student.prototype.constructor = Student;
//對(duì)象的_proto_指向創(chuàng)造函數(shù)的原型對(duì)象最終_proto_指向Object.prototype
//函數(shù)的原型對(duì)象是 有constructor 和 各種原型上的方法 construtor函數(shù)是構(gòu)造函數(shù)本身