一.概念介紹
首先,要明白物件是單個實物的抽象,物件是一個容器,封裝了屬性和方法,而面向物件是相對于面向程序來說的,面向物件的好處就是可抽象,封裝和可重用性,同時還提供了多型、繼承等非常有用的特性,
1.創建物件
一般來說,在js中構建物件有以下幾種方式,
(1)利用字面量創建物件
物件字面量:就是花括號{ }里面包含了表達這個具體事物(物件)的屬性和方法,var obj ={ };{ }里面采用鍵值對的形式表示
鍵: 相當于屬性名
值: 相當于屬性值,可以是任意型別的值(數字型別、字串型別、布爾型別、函式型別)
例如:注意函式型別的值的寫法
<script>
var obj = {
uname: '張三豐',
age: 19,
sex: '男',
sayHi: function () {
console.log('hi~');
}
}
</script>
(2)建構式介紹---見,
(3)原型鏈
(4)類class----見ES6新特性篇
(5)利用object創建物件
語法:let obj = new Object();
new是一個運算子,和±*/一樣是一個運算子 , 表示新創建一個物件
由于我們是使用系統默認的類創建的物件, 所以系統不知道我們想要什么屬性和行為, 所以我們必須手動的添加我們想要的屬性和行為
給一個物件添加屬性 : 物件名稱.屬性名稱 = 值;
給一個物件添加行為 : 物件名稱.行為名稱 = 函式;

2.new的程序干了哪些事情
new 在執行時會做四件事情:
-
在記憶體中創建一個新的空物件,
-
讓 this 指向這個新的物件,
-
執行建構式里面的代碼,給這個新物件添加屬性和方法,
-
回傳這個新物件(所以建構式里面不需要return),
3.靜態成員和實體成員
● 成員:就是指屬性、方法的統稱
● 靜態成員是指:由建構式直接呼叫的屬性、方法叫靜態成員,不能通過物件訪問
● 實體成員是指:由建構式創建出來物件才能呼叫的屬性和方法就叫實體成員,在建構式內部通過this添加的成員,
● 實體化: 創建一個物件,也可以叫實體化一個物件

uname age sing 就是實體成員,可以通過實體來訪問:console.log(ldh.uname);
假如我們在建構式本身上添加的成員 sex ,也就是添加一個靜態成員:Star.sex = '男'; 則,靜態成員只能通過建構式來訪問:console.log(Star.sex);
基于此,了解到雖然建構式挺不錯的,但是存在一個嚴重的記憶體浪費的問題,當我們使用建構式創建多個實體的時候,如果這個函式里面有多個靜態成員的函式,那么我們每一次創建實體物件,建構式下的方法都會重新開辟一個記憶體空間去存放這些方法,
但是明明這些方法都是一個建構式里面的,干嘛要這么麻煩,還要占用記憶體,所以出現了原型,
本文來自博客園,作者:122www,轉載請注明原文鏈接:https://www.cnblogs.com/131362wsc/p/17106055.html
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/543454.html
標籤:JavaScript
上一篇:淺談JS詞法環境
下一篇:原型和原型鏈的深入淺出
