標籤:java 資源 name 原理 person 部分 模式 return 混合
物件導向三大特性:封裝,繼承,多態。1.原始模式var obj = new Object(); obj.name = name; obj.sex = sex;obj.showName = function(){ alert("我的名字叫"+this.name)}obj.showSex ......var Cat = {} 也可以用json的方式建立 原理相同 2.原廠模式容易理解版function createPerson(name,sex){ // 原料 var obj = new Object(); //加工 obj.name = name; obj.sex = sex; obj.showName= function(){ alert(‘我的名字叫‘+this.name); } //出廠}json版function Cat(name,color){ return { name: name, color: color, showNamr: function(){ alert(‘我的名字叫‘+this.name); } }}缺點:沒有new,建立多個副本,代碼不夠簡潔3.建構函式模式function Cat(name,color){ this.name = name; this.color = color;}var cat1 = new Cat("大象","黃毛");new的作用:1.系統自動建立一個對象 2.將內部的this指向這個建立的對象 3.返回這個對象缺點:依舊建立多個副本浪費記憶體資源 4.原型模式(混合法)function Cat(name,colot){ this.name = name; this.color = color;}Cat.prototype.type = " 貓科動物";Cat.prototype.eat = function(){ alert("吃老鼠");}問題注意alert(cat1.eat == cat2.eat); //truetype和eat就指向同一塊記憶體地區了Cat即是類也是建構函式在js裡是部分家的建構函式首字母大寫原型上方法屬性和執行個體行間賦予的方法屬性 行間優先順序較高會替換原型上的方法屬性 5.物件導向常用到的方法prototype 屬性使您有能力向對象添加屬性和方法(也就就是java中的類的方法)constructor: 返回此對象創造它的函數的引用(建構函式)instanceof: 判斷對象是不是 一個建構函式的執行個體 isPrototypeOf() 判斷prototype對象和執行個體之間的關係Cat.prototype.isPrototypeOf(cat1);hasOwnProperty() 判斷屬性是行間區域屬性還是 整合prototypecat1.hasOwnProperty(‘name‘)屬於自己返回truein 判斷是否包含某個屬性 不管是本地還是原型上“name” in cat1in 用來遍曆所有屬性
js物件導向實現方式的演變及常用方法