標籤:color 原型模式 .class 基於 obj student teacher ext rip
javascript是一種“基於prototype的物件導向語言“,與java有非常大的區別,無法通過類來建立對象。那麼,既然是面象對象的,如何來建立對象呢?
一:通過“字面量”方式建立對象
方法:將成員資訊寫到{}中,並賦值給一個變數,此時這個變數就是一個對象
列如:
var person={"name":"abc","age":22,work:function(){console.loh(1)}}
如果{ }中為空白,則將建立一個Null 物件:
var person={}
示範代碼:
<script> var person={ name:"wqc", age:22, intro:function(){console.log(1)}}; person.intro();</script> 我們還可以給對象豐富成員資訊。 對象.成員名稱 = 值; 對象[成員名稱] = 值;也可以擷取對象的成員資訊。 對象.成員名稱; 對象[成員名稱];豐富成員資訊:
<script>var person={ name:"wqc", age:22, intro:function(){ console.log(1); } }person.class=22;//豐富成員變數</script>
二、通過“建構函式”方式建立
方法:
var person=new 函數名();
比如:var person=new object();
<script> function person(){ this.name="xiaoming"; this.age=22; this.intro=function(){ console.log(2) } } var per=new person(); per.intro();</script>
三、通過object方式建立。
var obj=new Object()
方法:先通過object構造器new一個對象,再往裡豐富成員資訊。\
<script type="text/javascript">2 var person = new Object();3 person.name = "dongjc";4 person.age = 32;5 person.Introduce = function () {6 alert("My name is " + this.name + ".I‘m " + this.age);7 };8 person.Introduce();9 </script>
第五種:原型建立對象模式
function Person(){}Person.prototype.name = ‘Nike‘;Person.prototype.age = 20;Person.prototype.jbo = ‘teacher‘;Person.prototype.sayName = function(){ alert(this.name);};var person1 = new Person();person1.sayName();
使用原型建立對象的方式,可以讓所有對象執行個體共用它所包含的屬性和方法。
第六種:使用原廠模式建立對象
function createPerson(name,age,job){ var o = new Object(); o.name = name; o.age = age; o.job = job; o.sayName = function(){ alert(this.name); }; return o; }var person1 = createPerson(‘Nike‘,29,‘teacher‘);var person2 = createPerson(‘Arvin‘,20,‘student‘);
在使用原廠模式建立對象的時候,我們都可以注意到,在createPerson函數中,返回的是一個對象。那麼我們就無法判斷返回的對象究竟是一個什麼樣的類型。於是就出現了第二種建立對象的模式。
第七種:組合使用建構函式模式和原型模式
function Person(name,age,job){ this.name =name; this.age = age; this.job = job;}Person.prototype = { constructor:Person, sayName: function(){ alert(this.name); };}var person1 = new Person(‘Nike‘,20,‘teacher‘);
JS建立對象的幾種方式整理