<script>
/*
两个术语: 函数/方法
函数(function): 如果在JavaScript代码中通过function默认定义一个结构, 称之为是函数.
方法(method): 如果将一个函数放到对象中, 作为对象的一个属性, 那么将这个函数称之为方法.
*/
function foo() {
}
// key: 字符串类型, 但是在定义对象的属性名时, 大部分情况下引号都是可以省略的
var person = {
// key: value
name: "why",
age: 18,
height: 1.88,
"my friend": {
name: "kobe",
age: 30
},
run: function() {
console.log("running")
},
eat: function() {
console.log("eat foods")
},
study: function() {
console.log("studying")
}
}
person.run();
</script>
对象的创建方法有很多,包括三种:
目前我们主要掌握对象字面量的方式,后续我们学习其他两种方式。
对象的使用过程包括如下操作:
<script>
// 1.对象字面量
var obj1 = {
name: "why"
}
// 2.new Object()
// // Object构造函数
// var obj2 = new Object()
// obj2.name = "kobe"
// // 3.new 其他类()
// function Person() {}
// var obj3 = new Person()
</script>
<script>
// 1.定义了一个对象
var info = {
name: "why",
age: 18,
friend: {
name: "kobe",
age: 30
},
running: function() {
console.log("running~")
}
}
// 2.访问对象中的属性
// console.log(info.name)
// console.log(info.friend.name)
// info.running()
// 3.修改对象中的属性
// info.age = 25
// info.running = function() {
// alert("I am running~")
// }
// console.log(info.age)
// info.running()
// 4.添加对象中的属性
info.height = 1.88
info.studying = function() {
console.log("I am studying~")
}
console.log(info)
// 5.删除对象中的属性
// delete关键字(操作符)
delete info.age
delete info.height
console.log(info)
</script>
为什么需要使用方括号呢
这是因为点符号要求key是有效的变量标识符
这时候我们就可以使用方括号
<script>
// 定义商品对象
var product = {
name: "鞋子",
desc: "鞋子非常棒!!!",
price: 99,
brand: "nike"
}
// 定义手机对象
var phone = {
name: "iPhone 13 Pro Max",
desc: "对iPhone的描述信息",
price: 888,
callPhone: function(phoneNum) {
console.log("打电话给某人:", phoneNum)
},
playGame: function(gameName) {
console.log("玩游戏:", gameName)
}
}
// 定义用户对象
var user = {
id: 1111111,
account: "coderwhy",
nickname: "coderwhy",
password: "xxx123",
avatarURL: "图片地址",
role: {
id: 110,
name: "管理员",
createTime: "2033-03-03"
}
}
</script>
<script>
var info = {
name: "why",
age: 18,
height: 1.88
}
// console.log(Object.keys(info))
// 对对象进行遍历
// 1.普通for循环
var infoKeys = Object.keys(info)
for (var i = 0; i < infoKeys.length; i++) {
var key = infoKeys[i]
var value = info[key]
console.log(`key: ${key}, value: ${value}`)
}
// 2.for..in..: 遍历对象
for (var key in info) {
var value = info[key]
console.log(`key: ${key}, value: ${value}`)
}
// 对象不支持: for..of..: 默认是不能遍历对象
// for (var foo of info) {
// }
</script>
原始类型的保存方式:在变量总保存的是值本身
对象类型的保存方式:在变量总保存的是对象的引用
我们来思考一个问题:如果需要在开发中创建一系列的相似的对象,我们应该如何操作呢?
比如下面的例子:
当然,一种办法是我们创建一系列的对象:
这种方式有一个很大的弊端:创建同样的对象时,需要编写重复的代码;
我们公共构造函数实现一些
这个构造函数可以确保我们的对象都是Person的类型,一般构造函数第一个字母大写进行区别,当然不是必须的,只是为了区别于普通函数