上文創建了一堆 utils、component-info,並實現了新組件模塊相關目錄和文件的創建。本文繼續實現後面的內容。 1 組件樣式文件並導入 在 src/service 目錄中創建 init-scss.ts 文件,該文件導出 initScss 函數。 由於 .vue 類型的組件的樣式就直接寫在 ...
一.概念介紹
首先,要明白對象是單個實物的抽象,對象是一個容器,封裝了屬性和方法,而面向對象是相對於面向過程來說的,面向對象的好處就是可抽象,封裝和可重用性,同時還提供了多態、繼承等非常有用的特性。
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