JS創建對象的四種方式
創建對象的4種方式:
- 1.字面量的方式去創建對象
- 2.使用
new
字符創建對象 - 3.自定義構造函數
- 4.工廠模式創建對象
對象是指:具有屬性和方法
1.通過字面量的方式去創建對象
var person1={ name:'柯南', age:12, sex:'男', eat:function(){ console.log("我餓瞭,想吃飯") }, say:function(){ console.log("我叫柯南") } } console.log("person.eat輸出函數",person.eat) person.eat(); //直接輸出 我餓瞭,想吃飯
我們需要註意的是:person.eat和person.eat()的區別
- person.eat是輸出函數
- person.eat()是調用函數
2.使用new字符創建對象
var person2=new Object(); person2.name='柯南' person2.age='21' person2.sex='男' person2.eat=function(){ console.log("我餓瞭,想吃飯") } person2.say=function(){ console.log("我叫柯南") } console.log( '性別',person2.sex ) //輸出男
上面這兩種方式去創建對象的缺點:
雖然上面這兩種都可以去創建對象
但是我們創建出來的對象壓根就不知道是什麼類型?
當然我們知道他們是OBject類型
這個時候我們就需要使用自定義構造函數去創建對象瞭
3.自定構造函數創建對象
function Person(name,age,sex,like){ console.log('沒有給like形參傳遞值就是undeined',like) // 這裡的this指向的是Person這個對象 console.log('this',this) this.name=name; this.age=age; this.sex=sex; this.say=function(){ console.log("我叫",name) } } //這一行代碼表示的是創建一個對象 //同時實例化一個對象 //並且給這個對象的屬性進行初始化 //所以這一行代碼並不簡單 let per1=new Person('柯南',19,'男'); per1.say(); console.log(per1 instanceof Person);//true
現在我們知道瞭per1
是屬於Person
類型的,這就是自定構造函數創建對象的優勢,我們知道它創建的對象是哪個類型的
ps:構造函數通常首字母大寫
當我們new一個對象的時候做瞭四件事情:
通過創建自定義對象我們明白瞭當我們new一個對象的時候做瞭四件事情
- 1.開辟空間存儲當前對象
- 2.把
this
設置為當前對象 - 3.設置屬性和方法
- 4.把
this
對象返回
4.工廠模式創建對象
function createObj(name,age) { let obj=new Object(); obj.name=name; obj.age=age; obj.sayHi=function(){ console.log(obj.name) } return obj; } let per=createObj('司藤',200) console.log(per.age); //200 per.sayHi(); //司藤
到此這篇關於 JS創建對象的四種方式的文章就介紹到這瞭,更多相關 JS創建對象的四種方式內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 詳解js創建對象的幾種方式和對象方法
- 原生Javascript實現繼承方式及其優缺點詳解
- 全面解析js中的原型,原型對象,原型鏈
- Javascript的原型和原型鏈你瞭解嗎
- JS 裡為什麼會有 this