日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

JavaScript学习-类与实例

發布時間:2024/1/18 javascript 79 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JavaScript学习-类与实例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

類、實例

  • 使用同一個構造函數創建的對象,我們稱為一類對象,也將一個構造函數稱為一個類。

  • 通過一個構造函數創建的對象,稱為該類的實例。

instanceof

使用 instanceof 可以檢查一個對象是否為一個類的實例。使用格式如下

t1 instanceof Teacher

所有的對象都是Object的后代,因此 任何對象 instanceof Object 的返回結果都是true。

json的介紹

JSON:JavaScript Object Notation(JavaScript對象表示形式)。
使用json可以讓數據在各個語言間傳遞。
JSON的屬性必須用雙引號引號引起來,和字面量格式很像,但字面量屬性不需要雙引號
json舉例:

{"name" : "zs","age" : 18,"sex" : true,"sayHi" : function() {console.log(this.name);}};

獲取此對象

<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>

運行結果:

原型對象

上一篇中的原型對象的繼續深入:
這是一種寫原型對象的方式:

Person.prototype.sayName = function(){alert("Hello大家好,我是:"+this.name);};
  • 原型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学习-类与实例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。