对象的组成
属性:属性名(字符串)和属性值(任意)组成
方法:一种特别的属性(属性值是函数)
如何访问对象内部数据
属性名:编码简单 有时不能用
[‘属性值’]:编码麻烦,能通用
什么时候必须使用[‘属性名’]的方式
1、属性名包含特殊字符;- 空格
2、属性名不确定
var p = {}
//1、给p对象添加一个属性;content-type:text/json
//p.content-tepe = 'text/json'//不能用
p['content-text'] = 'text/json'
console.log(p['content-text'])
//2、属性名不确定
var propName = 'myage'
var value = 37
//p.propName= value
p[propName] = value
console.log(p[propName])
以上代码运行结果:
text/json
37
如何定义函数
函数声明
表达式
如何调用(执行)函数
text():直接调用
obj.text():通过对象调用
new text():new调用
test.call/apply(obj):临时让text成为obj的方法进行调用
var obj = {}
function du() {
this.jj = 'jkd'
}
// obj.du() 不能直接 根本就没有
du.call(obj)//obj.du() 可以让一个函数成为指定任意对象的方法进行调用
console.log(obj.jj)
以上代码运行结果为:
jkd
回调函数
//定义主函数,回调函数作为参数
function A(callback) {
callback();
console.log('我是主函数');
}
//定义回调函数
function B(){
setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
//调用主函数,将函数B传进去
A(B)
以上代码运行结果为:
我是主函数
我是回调函数
常见的回调函数:
dom事件回调函数
定时器回调函数
ajax 请求回调函数
注意:回调函数有同步回调函数与异步回调函数
同步回调函数:
console.log('数组遍历之前')
var arr=[11,22,33,4]
arr.forEach(function(item){
console.log(item)
})
console.log("数组遍历之后")
代码运行结果为:
数组遍历之前
11
22
33
4
数组遍历之后
异步回调函数:
console.log("回调函数之前")
//定义主函数,回调函数作为参数
function A(callback) {
callback();
}
//定义回调函数
function B(){
setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
//调用主函数,将函数B传进去
A(B)
console.log('回调函数之后')
代码运行结果为:
回调函数之前
回调函数之后
我是回调函数
自执行函数:
(function(){
console.log("11")
})()
((function(){
console.log('11')
})())
以上两段代码都是自行式函数,只是写法不一样
结果都为:11
作用:
1,隐藏实现(可以把具体实现写在函数体内)
2,不会污染外部(全局)