javascript
JavaScript学习-类与实例
類、實例
-
使用同一個構造函數創建的對象,我們稱為一類對象,也將一個構造函數稱為一個類。
-
通過一個構造函數創建的對象,稱為該類的實例。
instanceof
使用 instanceof 可以檢查一個對象是否為一個類的實例。使用格式如下
t1 instanceof Teacher所有的對象都是Object的后代,因此 任何對象 instanceof Object 的返回結果都是true。
json的介紹
JSON:JavaScript Object Notation(JavaScript對象表示形式)。
使用json可以讓數據在各個語言間傳遞。
JSON的屬性必須用雙引號引號引起來,和字面量格式很像,但字面量屬性不需要雙引號
json舉例:
獲取此對象
<script type="text/javascript">var onejson={"name" : "zs","age" : 18,"sex" : true,"sayHi" : function() {console.log(this.name);}}console.log(onejson)for (var key in onejson){console.log(key); //獲取鍵console.log(onejson[key]); //獲取值(第二種屬性綁定和獲取值的方法)console.log("------");}</script>運行結果:
原型對象
上一篇中的原型對象的繼續深入:
這是一種寫原型對象的方式:
- 原型prototype的概念:
我們所創建的每一個函數,解析器都會向函數中添加一個屬性 prototype。這個屬性對應著一個對象,這個對象就是我們所謂的原型對象。
如果函數作為普通函數調用prototype沒有任何作用,當函數以構造函數的形式調用時,它所創建的實例對象中都會有一個隱含的屬性,指向該構造函數的原型,我們可以通過proto來訪問該屬性。
console.log(t1.__proto__ == Teacher.prototype); // 打印結果:true- 當原型對象中的屬性方法和構造函數中的屬性方法重名時,構造函數中的方法優先級較高。
原型對象就相當于一個公共的區域,所有同一個類的實例都可以訪問到這個原型對象,我們可以將對象中共有的內容,統一設置到原型對象中。
以后我們創建構造函數時,可以將這些對象共有的屬性和方法,統一添加到構造函數的原型對象中,這樣就不用分別為每一個對象添加,也不會影響到全局作用域,就可以使每個對象都具有這些屬性和方法了。
- 使用 in 檢查對象中是否含有某個屬性時,如果對象中沒有但是原型中有,也會返回true。
可以使用對象的**hasOwnProperty()**來檢查對象自身中是否含有該屬性。
function Teacher(name,age,likename){this.name=name;this.age=age;this.likename=likename;}var teacherProty={like:function(){console.log(this.name+"喜歡"+this.likename)},teach:function(){console.log("教書")}}Teacher.prototype=teacherProty;//new 創建1個新的對象,將函數內部的this指向新的對象var t1=new Teacher("小白",30,"畫畫")var t2=new Teacher("小黑",28,"唱歌")console.log("like" in t1)//trueconsole.log(t1.hasOwnProperty("like"))//false原型鏈
當原型對象中有原型,原型對象的原型中又有原型,一層一層形成的鏈就是原型鏈。
當我們使用或訪問一個對象的屬性或方法時
- 它會先在對象自身中尋找,如果有則直接使用;
- 如果沒有則會去原型對象中尋找,如果找到則直接使用;
- 如果沒有則去原型的原型中尋找,直到找到Object對象的原型。
- Object對象的原型沒有原型,如果在Object原型中依然沒有找到,則返回 null
對象的 toString() 方法
默認原型對中有toString方法,一般結果為:
可以在共用方法上重寫toString方法:
var teacherProty={like:function(){console.log(this.name+"喜歡"+this.likename)},teach:function(){console.log("教書")},toString:function(){return "[name="+this.name+" age="+this.age+" likename="+this.likename+"]"}}JS的垃圾回收(GC)機制
-
當一個對象沒有任何的變量或屬性對它進行引用時,此時我們將永遠無法操作該對象,此時這種對象就是一個垃圾,這種對象過多會占用大量的內存空間,導致程序運行變慢,所以這種垃圾必須進行清理。
-
上面這句話,也可以這樣理解:如果堆內存中的對象,沒有任何變量指向它時,這個堆內存里的對象就會成為垃圾。
-
JS擁有自動的垃圾回收機制,會自動將這些垃圾對象從內存中銷毀。我們不需要也不能進行垃圾回收的操作。我們僅僅需要做的是:如果你不再使用該對象,那么,將改對象的引用設置為 null 即可。
【注】函數調用完其中變量會自動銷毀,全局變量要設置為null
總結
以上是生活随笔為你收集整理的JavaScript学习-类与实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: React JSX 加载图片的一个坑
- 下一篇: 2020年T电梯修理证模拟考试题库及T电