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);// objectconsole.log(laoLiu.name);//Lao Liu//反模式//未使用new操作var pangLiu = Man();console.log(typeof pangLiu);//undefinedconsole.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);//numbervar nobj = new Number(100);console.log(typeof nobj);//objectvar s = "hello";console.log(s.toUpperCase());//HELLOvar 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>
欢迎转载,但转载请注明原文链接[博客园: http://www.cnblogs.com/jingLongJun/]
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。
[CSDN博客:http://blog.csdn.net/mergades]。
如相关博文涉及到版权问题,请联系本人。

浙公网安备 33010602011771号