自调用函数
函数表达式可以 "自调用"。
自调用表达式会自动调用。
如果表达式后面紧跟 () ,则会自动调用。
不能自调用声明的函数。
通过添加括号,来说明它是一个函数表达式:
实例
<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());