標籤:執行個體 content 概念 function 技術總監 job eof -- body
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> <script type=text/javascript charset=utf-8 > //自訂原型對象會改變原型對象的構造器。 //原型的概念: 原型對象裡的所有屬性和方法 被所有建構函式執行個體化出來的對象所共用 function Person(){} Person.prototype = { constructor:Person , name: ‘z3‘ , age: 20 , job : ‘程式員‘ , friends : [‘李四‘,‘王五‘] , sayName : function(){alert(‘我的名字!‘)} }; var p1 = new Person(); var p2 = new Person(); p1.friends.push(‘趙六‘);//數組的.push方法 alert(p1.friends);//改了 alert(p2.friends); //我們一般組合使用建構函式式和原型模式,在實際開發中,這種模式也是應用的最為廣泛。 // 組合使用原型和建構函式式 (定義一個類 開發時常用的方式),不能只用建構函式式或只用原型式。 function Person(name , age , friends , job){ this.name = name ; this.age = age ; this.friends = friends ; this.job = job ; } Person.prototype = { constructor: Person , sayName : function(){ alert(this.name);//誰調用sayName,this就是誰 } }; var p1 = new Person(‘z3‘ , 20 , [‘王五‘,‘趙六‘] , ‘技術總監‘); var p2 = new Person(‘李四‘, 25 , [‘王五‘,‘趙六‘ ,‘趙7‘] ,‘boss‘); alert(p1.friends); p1.sayName(); alert(p2.friends); p2.sayName(); //動態原型模式:(讓你的代碼 都封裝到一起)。動態原型模式:就是把資訊都封裝到函數中,這樣體現了封裝的概念。 function Person(name , age , friends , job){ this.name = name ; this.age = age ; this.friends = friends ; this.job = job ; //動態原型方法: if( typeof this.sayName != ‘function‘){//第一次new一個Person的時候會在原型添加這個方法,第二次new Person對象的時候就不會建立了。typeof是小寫function,constructor是大寫的Function Person.prototype.sayName = function(){ alert(this.name); } } } /* var o = { name:2, age:"22" } alert(o.sayName);//undefined alert(typeof o.sayName);//undefined */ //穩妥建構函式式: durable object(穩妥對象) 非常安全的環境中 // 1 沒有公用屬性 , 2 不能使用this對象 function Person(name , age , job){ // 建立一個要返回的對象,原廠模式, var obj = new Object(); //可以定義一下私人的變數和函數 private,js裡面是var局部變數,外部存取不了,內建函式使用,類似於java裡面通過private聲明一些變數方法。 var name = name ; //var sex = ‘男‘; //var saySex = function(){}; //添加一個方法 obj.sayName = function(){ alert(name); } return obj ; } var p1 = new Person(‘張三‘); p1.sayName(); </script> </head> <body> </body></html>
js17---建立對象:建構函式式和原型組合模式、動態原型模式、穩妥建構函式式