1、字面量
var obj =
2、建構函式
function obj()
var obj = new obj()
3、object.creat()
var o =
var obj = object.create(o)
new建構函式例項化乙個物件:建立乙個object物件並將其__proto__賦值為建構函式的prototype,將this繫結到建構函式;object.create(obj)建立乙個物件:建立乙個空的函式物件,將函式物件原型物件指向obj 返回函式物件例項
//new的實現方式
var obj = new object();
obj.__proto__=obj.prototype; // obj-建構函式
obj.call(obj); // 繫結this到建構函式
實現方式
object.creat=function(o);
f.prototype=o;
return new f();
}
_proto_ 隱式原型(物件才有、構成原型鏈、沿其查詢值); prototype 顯示原型(函式才有、實現繼承)。例項物件的__proto__指向的原型物件與他的建構函式的prototype指向同一原型物件
因此object.create()建立的物件無法獲取建構函式上的屬性、並且無法獲取到obj原型上的屬性,因為new f的__proto__指向obj,所以
new 時 obj2.__proto__指向obj.prototype,所以obj.prototype.color = '顏色'
var obj1 = object.creat(obj)
obj1.color // undefined
obj.prototype.color = '顏色'
var obj2 = new obj()
obj2.color // 顏色
判斷例項的建構函式判斷建構函式的prototype是否在例項的原型鏈上1、建構函式實現繼承
部分繼承(只繼承建構函式裡的內容)2、原型鏈實現繼承var parent=function()
var child=function()
改變乙個例項屬性(引用型別)另乙個跟著變3、組合方式var parent = function() {}
parent.prototype.parentname='父'
var child = function(){}
child.prototype=new parent()
child.prototype.constructor=child
var a1=new child();var a2=new child()
parent被多次例項化4、組合優化var parent=function(name)
parent.prototype.getname=function()
var child=function(name)
child.prototype=new parent()
child.prototype.constructor=child
var parent=function(name)
parent.prototype.getname=function()
var child=function(name)
var immediate= function(){}
immediate.prototype=parent.prototype
child.prototype=new immediate()
child.prototype.constructor=child
物件導向的個人理解
個人對於物件導向的個人理解 物件導向主要是分為繼承 封裝 多型 三大特性 繼承 繼承就是從已有類得到繼承資訊建立新類 提供繼承資訊的稱為父類 得到繼承資訊的稱為子類 封裝 將資料和運算元據的方法繫結起來對資料的訪問只能通過已定義的介面,就是把能隱藏的東西都隱藏起來,只像外界提供最簡單的程式設計介面 ...
什麼是物件導向 個人對物件導向的理解
物件導向是一種程式設計思想.物件導向最主要體現在它的特徵上.物件導向的三大特徵是 封裝,繼承,多型.封裝 將事物 物件 的屬性和行為抽象出來,形成乙個類.隱藏了內部的屬性,使外界通過給定的介面訪問和操作屬性,保證了資料的安全性.外部通過物件呼叫行為,隱藏具體的實現細節,解耦合.繼承 將具有共同特性和...
個人理解的python的物件導向
在學習到python的物件導向的時候,發現python的類的的屬性是有區分類的屬性及物件的屬性的,示例如下 class test a test def test1 self,a self.a a def show self print test.a def show1 self test.a for...