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>
时间: 2024-10-09 15:21:27

JavaScript模式读书笔记 第3章 字面量和构造函数的相关文章

&lt;&lt;Javascript Patterns&gt;&gt;阅读笔记 – 第3章 字面量和构造函数

对象字面量 首先给出对象字面量的定义语法: 1. 将对象定义在一对括号中(左大括号“{”和右大括号”}”) 2. 对象中以逗号分隔属性和方法. 每个属性或方法以key-value的形式出现, key和value之间以冒号分割. 3. 当给变量赋值时, 不要忘记或大括号后面的分号 空对象 var obj = {}; 这样就定义了一个空的对象, 但它并非什么也没有, 至少它具有从Object.prototype中继承下来的属性和方法. 来自构造函数的对象 语法: // 反模式, 不推荐这么用 Var

JavaScript模式读书笔记 文章3章 文字和构造

1.对象字面量 -1.Javascript中所创建的自己定义对象在任务时候都是可变的.能够从一个空对象開始,依据须要添加函数.对象字面量模式能够使我们在创建对象的时候向其加入函数.       <script> //定义空对象 var dog = {}; //对空对象加入方法 dog.name = "Liubo"; //对对象添加方法 dog.getName = function(){ return dog.name; }; //改变属性和方法 dog.getName =

JavaScript模式读书笔记 第5章 对象创建模式 1

1,命名空间模式  namespace   <script> var myApp = {};//通过全局变量来实现命名空间 maApp.Parent = function (){   }; myApp.Child = function(){ };   </script> 通用命名空间函数   <script> //不安全代码 var myApp = {}; //安全代码 if(typeof myApp === "undefined"){ var my

JavaScript模式读书笔记 第4章 函数

2014年11月10日 1,JavaScript函数具有两个特点: 函数是第一类对象    函数可以提供作用域 函数即对象,表现为: -1,函数可以在运行时动态创建,也可以在程序执行过程中创建. -2,函数可以分配给变量,可以将它们的引用复制到其他变量,可以被扩展,此外,函数还可以被删除. -3,可以做为参数传递给其他函数,,还可以由其他函数返回. -4,函数可以有自己的属性和方法. 2,声明VS表达式:名称和变量声明提升 //这是一个函数表达式 //它做为一个参数传递给函数 CallMe ca

JavaScript模式读书笔记 第7章 设计模式

1,单例模式 -1,最简单的单例: <script> //obj为单例 var obj = { myProp: "My Value" }; var obj1 = obj; var obj2 = obj; console.log(obj1 == obj2);//true console.log(obj1 === obj2);//true   </script> -2,静态属性中的实例:  <script> function Universe(){ if

JavaScript模式读书笔记 第6章 代码复用模式

主要使用代码继承来完成复用. 1,使用类式继承. -1,类式继承:按照类的方式来实现继承,即所谓的类式. -2,类式继承:通过构造函数(child)获取来自parent的属性,从而创建对象. <script> //parent function Parent(name){ this.name = name || 'Adam'; } Parent.prototype.say = function(){   return this.name; } //child function Child(na

【javascript dom读书笔记】 第九章 CSS-DOM

用dom设置样式 element.style.property = value 何时用dom脚本设置样式 作者写到:绝大多数的现代浏览器,虽然对css伪类的支持不是很完整,但是对dom都有良好的支持,所以需要考虑的是问题最简单的解决方案是什么,哪种解决方案会得到更多的浏览器支持. 在尝试了书中dom设置的实例以后,虽然代码比css要多很多,但是有一种操纵的快感,这应该是dom编程的艺术所在吧,有一种后端语言的感觉,至于实际使用中的选择,见仁见智做出更适合的自己的决定. 但最后作者说到有一种css

iOS开发中的那些的约定俗成(1)————《编写高质量iOS与OS X代码的52个有效方法》读书笔记(第一章)

iOS开发中的那些的约定俗成(1) ----<编写高质量iOS与OS X代码的52个有效方法>读书笔记(第一章) 前言 "我要成为一个高产的开发人员.""想要混的好,就得多努力." 写这些东西是因为毕竟看了书,但是看书看过去之后,也许印象不是很深刻,有些东西现在也理解不了,那我就把我理解的,现在就可以用到的东西,简单的写出来就好,让自己今后看到就能明白其中的意思. 还有就是锻炼一下表达,编辑能力,慢慢的提升自己,随时随地的都要有一个锻炼的心. 最后当然就

JavaScript设计模式:读书笔记(未完)

该篇随我读书的进度持续更新阅读书目:<JavaScript设计模式> 2016/3/30 2016/3/31 2016/3/30: 模式是一种可复用的解决方案,可用于解决软件设计中遇到的常见问题./将解决问题的方法制作成模板,并且这些模板可应用于多种不同的情况.有效模式的附加要求:适合性,实用性,适用性. 模式的优点: 防止局部问题引起大问题,模式让我们的代码更有组织性 模式通常是通用的解决方式,不管我们开发哪种应用程序,都可以用模式优化我们代码的结构 模式确实可以让我们避免代码复用,使代码更