自调用函数
函数表达式可以 "自调用"。
自调用表达式会自动调用。
如果表达式后面紧跟 () ,则会自动调用。
不能自调用声明的函数。
通过添加括号,来说明它是一个函数表达式:
实例
<script> $(function(){ (function (){ alert(1); })();// 自己调用自己 弹出 1 }); </script>
1.JavaScript 对象
如下 car 有属性 type,model,color 和 方法 drive()
<script> var car = {type:"Fiat", model:500, color:"white"}; car.drive=function(){ car.type = "111"; } $(function(){ car.drive(); alert(car.type) }); </script>
第二种方式
var myObject = { firstName:"John", lastName: "Doe", fullName: function () { return this.firstName + " " + this.lastName; } } myObject.fullName(); // 返回 "John Doe"
2.JavaScript JSON
JSON.parse() | 用于将一个 JSON 字符串转换为 JavaScript 对象。 |
JSON.stringify() | 用于将 JavaScript 值转换为 JSON 字符串。 |
<script> var text = '{ "sites" : [' + '{ "name":"Runoob" , "url":"www.runoob.com" },' + '{ "name":"Google" , "url":"www.google.com" },' + '{ "name":"Taobao" , "url":"www.taobao.com" } ]}'; var obj = JSON.parse(text);//1.字符串转换为 json对象 // 2.直接定义 json格式的 对象 var obj1 = {"sites":[{"name":"Runoob" , "url":"www.runoob.com" },{ "name":"Google" , "url":"www.google.com" }, { "name":"Taobao" , "url":"www.taobao.com" } ] } $(function(){ console.log(obj.sites[1].name + "," + obj.sites[1].url);//"Google,www.google.com" console.log(obj1.sites[1].name + "::" + obj1.sites[1].url);//"Google::www.google.com" }); </script>
3.JavaScript 闭包
还记得函数自我调用吗?该函数会做什么?
实例
<script> $(function(){ // 1.首先自己调用自己一次,把 局部变量counter初始化0,并返回内部的函数 赋予给变量 add。 // 2.以后每次 对 add()的调用 都是 对 内部函数的调用。 var add = (function () { var counter = 0; return function () {return counter += 1;} })(); add(); add(); add(); //-------------------------------- }); </script>
4. js 数组去重
思路: 1.创建一个新的数组存放结果 2.创建一个空对象 3.for循环时,每次取出一个元素与对象进行对比,如果这个元素不重复,则把它存放到结果数组中,同时把这个元素的内容作为对象的一个属性,并赋值为1,存入到第2步建立的对象中。 说明:至于如何对比,就是每次从原数组中取出一个元素,然后到对象中去访问这个属性,如果能访问到值,则说明重复。 Array.prototype.unique3 = function(){ var res = []; var json = {}; for(var i = 0; i < this.length; i++){ if(!json[this[i]]){ res.push(this[i]); json[this[i]] = 1; } } return res; } var arr = [112,112,34,'你好',112,112,34,'你好','str','str1']; alert(arr.unique3());