標籤:images 變數 表示 綁定 turn 成員 .com 聲明 back
一、閉包
閉包是指可以包含自由(未綁定到特定對象)變數的代碼塊。
「閉包」,是指擁有多個變數和綁定了這些變數的環境的運算式(通常是一個函數),因而這些變數也是該運算式的一部分。
閉包是個函數,而它「記住了周圍發生了什麼」。表現為由「一個函數」體中定義了「另個函數」
由於範圍鏈只能從內向外找,預設外部無法擷取函數內部變數。閉包,在外部擷取函數內部的變數。
<script> name="aa"; function f1(){ var name="bb"; function f2(){ alert(name); } return f2 } var ret=f1(); ret();</script>二、物件導向
1、首先介紹prototype
每個函數就是一個對象(Function),函數對象都有一個子物件 prototype對象,類是以函數的形式來定義的。prototype表示該函數的原型,也表示一個類的成員的集合
在通過new建立一個類的執行個體對象的時候,prototype對象的成員都成為執行個體化對象的成員。
1、該對象被類所引用,只有函數對象才可引用;
2、在new執行個體化後,其成員被執行個體化,執行個體對象方可調用。
同時,函數是一個對象,函數對象若直接聲明成員,不用被執行個體化即可調用。
具體參考
http://baike.baidu.com/item/prototype/14335187
2、原型
js中的物件導向
沒有class 只有函數,函數可以構造出來類
這裡的this就相當於 python中的self
建立對象 需要new
這裡的資料是封裝在對象裡的
具體說明 如下:
// 表示建立了一個類Foo,並且建立了Foo類的構造方法 function Foo(name){ this.Name=name;// 把下面的換成原型// this.func= function () {// alert(this.Name)// } }// 建立原型是為了讓方法放入類中,每個對象直接來調用就好了 Foo.prototype={ func: function () { alert(this.Name) } }// 原型的第二種寫法 Foo.prototype.func=function(){ alert(this.Name) }
<script> function Foo(name,age){ this.Name=name; thos.Age=age; } Foo.prototype = { Func:function(){ return this.Name+this.Age } } obj1=new Foo("eric",18); ret=obj1.Func(); console.log(ret)</script>物件導向原型
第六篇 javascript物件導向