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