1.緣起於建構函式
建構函式本身也是普通函式,但是在其內部使用了this物件指向建構函式本身。每次例項化的新物件都包含乙個constructor屬性,指向他們的建構函式
function
cat(name,color)
var cat1 = new cat("大毛","黃色");
var cat2 = new cat("二毛","黑色");
alert(cat1.constructor == cat); //true
alert(cat2.constructor == cat); //true
js規定 每個建構函式本身都包含乙個prototype屬性,指向另乙個物件。這個物件的所有屬性和方法,都會被建構函式的例項繼承。可以把那些不變的屬性和方法,直接定義在prototype物件上。
function
cat(name,color)
cat.prototype.type = "貓科動物";
cat.prototype.eat = function
();然後,生成例項。
var cat1 = new cat("大毛","黃色");
var cat2 = new cat("二毛","黑色");
alert(cat1.type); // 貓科動物
cat1.eat(); // 吃老鼠
這時***所有例項的type屬性和eat()方法,其實都是同乙個記憶體位址,指向prototype物件***,因此就提高了執行效率。
alert(cat1.eat == cat2.eat); //true
2.關於propotype屬性 js原生的一些輔助方法
isprototypeof()每個例項物件都有乙個hasownproperty()方法,用來判斷某乙個屬性到底是本地屬性,還是繼承自prototype物件的屬性。判斷,某個proptotype物件和某個例項之間的關係
2.hasownproperty()
alert(cat1.hasownproperty("name")); // true
alert(cat1.hasownproperty("type")); // false
3 in運算子可以用來判斷,某個例項是否含有某個屬性,不管是不是本地屬性。
alert("name"
in cat1); //
true
alert("type"
in cat1); //
true
in運算子還可以用來遍歷某個物件的所有屬性。for(var prop in cat1)
物件導向的那些事
繼承 將多個類中具有的同種功能和同種變數抽離出來讓其他類與這個類產生聯絡 多型 事物在不同的時候有不同的表現形式,也就是可以將不同的子類當成父類來看比如你現在是兒子但是在你兒子眼裡你就是父親 繼承 1 子類能夠繼承父類的絕大多數屬性,但是父類私有的不能被繼承,final修飾的方法不能被子類重寫,被f...
python 物件導向那些事 2
1 乙個物件的屬性可以是另外乙個類建立的物件。class gun def init self,model self.model model self.bullet count 0def add bullet self,count self.bullet count count defshoot se...
python 物件導向那些事 3
1 例項和物件的基本概念 定義工具類,輸出建立了多少工具物件 class tool object count 0def init self,name self.name name tool.count 1 tool 1 tool 剪刀 tool 2 tool 滑鼠 print tool.count ...