一、对象属性相关
- 什么是instanceof关键字?
instanceof用于判断 “对象” 是否是指定构造函数的 “实例”;
- instanceof注意点:只要 构造函数的原型对象出现在实例对象的原型链中都会返回true;
console.log(stu instanceof Person); // true
- JavaScript-isPrototypeOf属性
1.什么是isPrototypeOf属性: isPrototypeOf用于判断 一个对象是否是另一个对象的原型;
console.log(Person.prototype.isPrototypeOf(stu)); // true
- isPrototypeOf注意点:只要调用者在传入对象的原型链上都会返回true;
- JavaScript-判断对象属性
-
需求: 判断某一个对象是否拥有某一个属性;
in的特点: 只要类中或者原型对象中有, 就会返回true;
console.log("name" in p); // true
-
需求: 判断某一个对象自身是否拥有某一个属性;
console.log(p.hasOwnProperty("name")); //true;
二、什么是对象的遍历?
对象的遍历就是依次取出对象中所有的属性和方法;
- 如何遍历一个对象?
在JS中可以通过高级for循环来遍历对象;
以下代码的含义: 将指定对象中所有的属性和方法的名称取出来了依次的赋值给key这个变量;
for(let key in obj){}
例:
function Person(myName, myAge){
this.name = myName;
this.age = myAge;
this.say = function(){
console.log(this.name, this.age);
}
}
let p = new Person("abc", 22);
console.log(p);
for(let key in p){
if(p[key] instanceof Function){
continue;
}
// console.log(key); // name / age / say
// 注意点: 以下代码的含义取出p对象中名称叫做当前遍历到的名称的属性或者方法的取值;
console.log(p[key]); // p["name"] / p["age"] / p["say"]
// 注意点: 以下代码的含义取出p对象中名称叫做key的属性的取值
// console.log(p.key); // undefined
}
四、JavaScript-对象解构赋值
注意点: 在对象解构赋值中, 左边的变量名称必须和对象的属性名称一致, 才能解构出数据;
例:
let {name, age} = {name: "abc",age: 34};
let {age} = {name: "abc",age: 34};
console.log(age); // 34
数组解构赋值应用举例:
let arr = [1, 3];
function sum([a, b]) {
return a + b;
}
// let res = sum(arr[0], arr[1]);
let res = sum(arr);
console.log(res);
****************************
对象解构赋值应用:
let obj = {
name: "abc",
age: 33
}
function say({name, age}) {
console.log(name, age);
}
say(obj);
-End