1 对象
- 什么是对象?
- 多个数据的封装体(集合体)。
- 用于保存多个数据的容器。
- 一个对象代表现实中的一个事物(代表现实中的某个事物,是该事物在编程中的抽象)。
- 对象的组成
- 属性:属性名(
字符串
)和属性值(任意)组成。(代表现实事物的状态数据;属性名都是字符串类型,属性值是任意类型)
- 方法:一种特别的属性(属性值是函数)。(代表现实事物的行为数据)
- 如何访问对象内部数据?
- 对象.属性名:编码简单,但有时不能用
- ["属性名"]
<script>
var p = {
name: "wade",
age: 12,
setName: function (name) {
this.name = name;
}
}
console.log(p.age)
console.log(p["age"])
p.setName("kobe")
p["setName"]("t-mac")
console.log(p.name) // t-mac
</script>
- 什么时候必须使用['属性名']的方式?
- 属性名包含特殊字符:-、空格(属性名不是合法的标识名)。
- 属性名不确定,需要通过变量来访问
<script>
var p = {}
// p.content-type = "text/json";
p["content-type"] = "text/json";
console.log(p["content-type"]) // text/json
var a = "content-type";
console.log(p.a); //undefinde
// []: 内部可以是一个变量,而通过.的方式就不能是变量
console.log(p[a]) // text/json
</script>
2 函数
- 什么是函数
- 如何定义函数
<script>
// 声明式
function sum(a, b) {
return a + b
}
console.log(sum(1, 2))
// 表达式
var reduce = function (a, b) {
return a - b
}
console.log(reduce(1, 2))
</script>
- 如何调用
- 直接调用:函数名()
- 对象调用:此时函数是声明在对象中的(方法)
- 构造函数可以通过new 调用,构造对象
- call/apply调用,临时让某个方法称为一个对象的方法调用
<script>
// 声明式
function sum(a, b) {
return a + b
}
console.log(sum(1, 2)) // 直接调用
var a = {
test: function () {
console.log("hello world")
}
}
a.test()
// 构造函数
function Person(name) {
this.name = name
}
var wade = new Person("Wade")
function fun(age) {
this.age = age
}
// call/apply调用: wade这个对象,是没有fun方法的
// wade.fun(12) // wade.fun is not a function
console.log(fun.call(wade, 12)) // 就相当于:wade.fun(12)
console.log(wade.age) // 12
</script>