當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
JavaScript模式读书笔记 第3章 字面量和构造函数
生活随笔
收集整理的這篇文章主要介紹了
JavaScript模式读书笔记 第3章 字面量和构造函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1,對象字面量 ? ? -1,Javascript中所創建的自定義對象在任務時候都是可變的。可以從一個空對象開始,根據需要增加函數。對象字面量模式可以使我們在創建對象的時候向其添加函數。
? ??? <script> //定義空對象 var dog = {}; //對空對象添加方法 dog.name = "Liubo"; //對對象增加方法 dog.getName = function(){ return dog.name; }; //改變屬性和方法 dog.getName = function(){ returen "LaoLiu"; }; //完全刪除屬性/方法 delete dog.name;? </script> <script> var dog = { name: "LaoLiu", getName:function(){ return this.name; } };? </script> -2,對象字面量語法 a. 將對象包裝在大括號中。 b. 對應以逗號分割屬性和方法。 c. 用冒號分割屬性名和屬性值。 d. 當變來那個復制的時候,以右括號結束。
2,自定義構造函數: ? ??? <script> var Person = function(name){ this.name = name; this.say = function(){ return "I am " + this.name; } } var adam = new Person("Adam"); console.log(adam.say());? </script>
? ? 當以new操作符調用構造函數的時候:
? ??? ? a. 創建一個空對象,并且this變量引用該對象,同時還繼承了該函數的原型。
? ??? ? b.屬性和方法被加入到this引用的對象中。
? ??? ? c.新創建的對象由this所引用,并且最后隱式的返回this。
以上代碼,在后臺實際執行如下所示: ? ?? var Person = function(name){ var this ?= {}; this.name = name; this.say = function(){ return "I am " + this.name }; //return this; }; 3,構造函數的返回值。 ? ? ??<script> var Objectmark = function(){ this.name = "This is it!"; var that = {}; that.name = "And that is that!"; return that;//因為return that所以導致第一次初始化的name將被忽略 }; var o = new Objectmark(); console.log(o.name);? </script> 4,強制使用new的模式 <script> function Man(){ this.name = "Lao Liu"; } //創建新對象 var laoLiu = new Man(); console.log(typeof laoLiu);// object console.log(laoLiu.name);//Lao Liu //反模式 //未使用new操作 var pangLiu = ?Man(); console.log(typeof pangLiu);//undefined console.log(pangLiu.name);//Cannot read property 'name' of undefined?? </script>
5,數組、 ? ? 1, var a = [3];//聲明一個長度為1 ,a[0] = 3 的數組。
? ? 2,var a = new Array(3);//聲明一個長度為3的數組
6,JSON:即為大括號包含起來的key-value ? ? JSON解析:
?<script> var jstr = '{"mykey" : "my value"}'; //反模式 var data = eval('(' + jstr + ')'); console.log(data); //推薦使用 data = JSON.parse(jstr); console.log(data.mykey);? </script>
JSON封裝: ? <script> var dog = { name : "LaoLIu",? dob: new Date(), legs: [1, 2, 3, 4] }; var jsonStr = JSON.stringify(dog); console.log(jsonStr);//{"name":"LaoLIu","dob":"2014-11-07T06:17:28.097Z","legs":[1,2,3,4]}? </script> 7,正則表達式 ? ? a.使用new RegExp生成正則表達式。 ? ? ?b.使用字面量語法
8,基本類型包裝器 ? ? Javascript的五類基本類型:數字、字符串、布爾、null和undefined。
? ? 分別對應: Number() ? String() ? Boolean()
? <script> var n = 100; console.log(typeof n);//number var nobj = new Number(100); console.log(typeof nobj);//object var s = "hello"; console.log(s.toUpperCase());//HELLO ? var greet = "1 2 3 4"; console.log(greet.split(" ")[0]);//1? </script> 9,錯誤對象(異常捕獲) ? ??? ??
? ? ?? <script> try{ throw{ name:"MyError",//自定義錯誤類型 message:'oops', extra: 'This is Exception', remedy: genericErrorhandler//指定應該處理該錯誤的函數 }; }catch(e){ ? alert(e.message); e.remedy();//調用genericErrorhandler } function genericErrorhandler(){ alert("Hi, BigLiu!"); }? </script>
? ??? <script> //定義空對象 var dog = {}; //對空對象添加方法 dog.name = "Liubo"; //對對象增加方法 dog.getName = function(){ return dog.name; }; //改變屬性和方法 dog.getName = function(){ returen "LaoLiu"; }; //完全刪除屬性/方法 delete dog.name;? </script> <script> var dog = { name: "LaoLiu", getName:function(){ return this.name; } };? </script> -2,對象字面量語法 a. 將對象包裝在大括號中。 b. 對應以逗號分割屬性和方法。 c. 用冒號分割屬性名和屬性值。 d. 當變來那個復制的時候,以右括號結束。
2,自定義構造函數: ? ??? <script> var Person = function(name){ this.name = name; this.say = function(){ return "I am " + this.name; } } var adam = new Person("Adam"); console.log(adam.say());? </script>
? ? 當以new操作符調用構造函數的時候:
? ??? ? a. 創建一個空對象,并且this變量引用該對象,同時還繼承了該函數的原型。
? ??? ? b.屬性和方法被加入到this引用的對象中。
? ??? ? c.新創建的對象由this所引用,并且最后隱式的返回this。
以上代碼,在后臺實際執行如下所示: ? ?? var Person = function(name){ var this ?= {}; this.name = name; this.say = function(){ return "I am " + this.name }; //return this; }; 3,構造函數的返回值。 ? ? ??<script> var Objectmark = function(){ this.name = "This is it!"; var that = {}; that.name = "And that is that!"; return that;//因為return that所以導致第一次初始化的name將被忽略 }; var o = new Objectmark(); console.log(o.name);? </script> 4,強制使用new的模式 <script> function Man(){ this.name = "Lao Liu"; } //創建新對象 var laoLiu = new Man(); console.log(typeof laoLiu);// object console.log(laoLiu.name);//Lao Liu //反模式 //未使用new操作 var pangLiu = ?Man(); console.log(typeof pangLiu);//undefined console.log(pangLiu.name);//Cannot read property 'name' of undefined?? </script>
5,數組、 ? ? 1, var a = [3];//聲明一個長度為1 ,a[0] = 3 的數組。
? ? 2,var a = new Array(3);//聲明一個長度為3的數組
6,JSON:即為大括號包含起來的key-value ? ? JSON解析:
?<script> var jstr = '{"mykey" : "my value"}'; //反模式 var data = eval('(' + jstr + ')'); console.log(data); //推薦使用 data = JSON.parse(jstr); console.log(data.mykey);? </script>
JSON封裝: ? <script> var dog = { name : "LaoLIu",? dob: new Date(), legs: [1, 2, 3, 4] }; var jsonStr = JSON.stringify(dog); console.log(jsonStr);//{"name":"LaoLIu","dob":"2014-11-07T06:17:28.097Z","legs":[1,2,3,4]}? </script> 7,正則表達式 ? ? a.使用new RegExp生成正則表達式。 ? ? ?b.使用字面量語法
8,基本類型包裝器 ? ? Javascript的五類基本類型:數字、字符串、布爾、null和undefined。
? ? 分別對應: Number() ? String() ? Boolean()
? <script> var n = 100; console.log(typeof n);//number var nobj = new Number(100); console.log(typeof nobj);//object var s = "hello"; console.log(s.toUpperCase());//HELLO ? var greet = "1 2 3 4"; console.log(greet.split(" ")[0]);//1? </script> 9,錯誤對象(異常捕獲) ? ??? ??
? ? ?? <script> try{ throw{ name:"MyError",//自定義錯誤類型 message:'oops', extra: 'This is Exception', remedy: genericErrorhandler//指定應該處理該錯誤的函數 }; }catch(e){ ? alert(e.message); e.remedy();//調用genericErrorhandler } function genericErrorhandler(){ alert("Hi, BigLiu!"); }? </script>
轉載于:https://www.cnblogs.com/jingLongJun/p/4491080.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的JavaScript模式读书笔记 第3章 字面量和构造函数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 陶瓷天线和PCB天线以及IPEX天线三者
- 下一篇: jQuery图表插件 JS Charts