一、對象屬性相關
- 什麼是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