脑图
使用{}
创建对象,并指定属性和方法
const person = {
name:"Jerry",
age:18
}
使用Object()
构造函数
const person = new Object() // 相当于 const person = {}
person.name = "Jerry"
person.age = 18
person.sayName = function(){
console.log(this.name)
}
function Person(name,age){
this.name = name
this.age = age
}
Person.prototype.sayName = function(){
console.log(this.name)
}
const person = new Person("Jerry",18)
console.log(person)
数组和对象的使用其实是差不多的,只是所存储的类型不同
object[属性名字符串]
属性名的本质就是字符串
const person = {
name : "Jerry",
"age":18
}
console.log(person["name"]) // Jerry
在简写方式中,我们使用.
运算符来对对象进行读取的操作
const person = {
name : "Jerry",
"age":18
}
console.log(person.name) // Jerry
在以下条件中,必须使用通用方式
-
、空格const person = {
}
/* person.content-type = 'text/json'
console.log(person.content-type) 报错*/
person['content-type'] = 'text/json'
console.log(person['content-type']) // text/json
添加
object.属性名 = 属性值
删除
可以使用delete
关键字
delete object.属性名
const person = {
name:"Jerry",
age:18,
}
/* 添加 */
person.gender = 'male'
console.log(person)
/* 删除 */
delete person.gender
console.log(person)
输出
delete
只对本对象的属性删除有作用,如果原型链上有相同的属性,则无效
主要用来继承方法
过程
constructor
属性例子
/* 父类 */
function Parent(){
this.name = 'parent'
}
/* 将需要继承的方法添加到原型中 */
Parent.prototype.sayName = function(){
console.log(this.name)
}
/* 子类 */
function Child(){
this.name = 'child'
}
/* 子类的原形指向父类的实例 */
Child.prototype = new Parent()
/* 修改constructor指针 */
Child.prototype.constructor = Child
让我们看看子类的实例能不能调用父类的方法
const child = new Child()
child.sayName() // child
我们发现他是完全可以的
主要用来继承属性
过程
call
绑定this
对象为父类例子
function Parent(name,age){
this.name = name
this.age = age
}
function Child(name,age,gender){
/* 继承父类中的属性:相当于调用普通函数,给this赋值 */
Parent.call(this,name,age)
this.gender = gender
}
const child = new Child("Jerry",18,"male")
console.log(child)
输出
使用构造函数继承属性,使用原型链继承方法
实例
function Parent(name,age){
this.name = name
this.age = age
}
Parent.prototype.sayName = function(){
console.log(this.name)
}
/* 继承属性 */
function Child(name,age,gender){
/* 继承父类中的属性:相当于调用普通函数,给this赋值 */
Parent.call(this,name,age)
this.gender = gender
}
/* 继承方法 */
Child.prototype = new Parent()
Child.prototype.constructor = Child
/* 验证 */
const child = new Child("Jerry",18,"male")
console.log(child)
child.sayName()
输出
in
用来监测一个属性是否在对象中(包括原型链)详情点击,返回布尔值
语法
属性名字符串 in 对象
实例
const person = {
name:"Jerry"
}
/* 设置原型对象中的属性 */
person.__proto__.age = 18
console.log("name" in person)// true
console.log("age" in person)// ture
hasOwnProperty
用来判断对象本身是否拥有某个属性(排除原型链)详情点击,返回布尔值
语法
object.hasOwnProperty(属性名字符串)
实例
const person = {
name:"Jerry"
}
/* 设置原型对象中的属性 */
person.__proto__.age = 18
console.log(person.hasOwnProperty("name"))// true
console.log(person.hasOwnProperty("age")) //false
for...in
对于数组和对象的属性进行枚举,详情点击
语法
for (变量 in 对象){
在此执行代码
}
实例
const person = {
name:"Jerry",
age:18,
gender:"male",
address:"JiaLiDun"
}
for( x in person){
console.log(x)
}
for( x in person){
console.log(person[x])
}
输出