物件導向小知識
- instanceOf
- 作用:判斷某個物件是否是由指定的建構函式建立出來的
- 使用方法:物件 instanceOf 建構函式
- 例子:
function Person(name,age) {
this.name = name;
this.age = age;
}
function Dog(name,age) {
this.name = name;
this.age = age;
}
var obj1 = new Person("張三",20);
var obj2 = new Dog("旺財",1);
console.log(obj1 instanceof Person); //true
console.log(obj2 instanceof Person); //false
console.log(obj1 instanceof Dog); //false
console.log(obj2 instanceof Dog); //true
- 建構函式注意事項
- 1.在使用建構函式的時候必須加上new 如果不加上new 那麼可能會出錯,內部就不會建立新的物件,內部的this指向的是window。
- 2 this : 如果使用new呼叫建構函式,那麼this指向的是新建立的物件。如果普通呼叫,this指向的是window。
再次強調什麼是原型物件
- 什麼是原型物件
- 每個建構函式預設都有一個和它相關聯(<->)的物件,這個物件被稱為建構函式的原型物件。
建構函式找原型物件:prototype
原型物件找建構函式:constructor
這個原型物件本身是一個物件,這個物件是Object型別,有一個構造器屬性(constructor) -
原型物件的特點
建構函式的原型物件上面的屬性和方法會被該建構函式建立的所有物件共享 - 如何訪問原型物件
建構函式.prototype
物件.__proto__
Object.getPrototypeOf(物件)
- 如何使用原型物件
利用物件的動態特性
使用字面量的方式來直接替換 - 原型物件-建構函式-物件
- 例項化:使用建構函式建立物件的過程
- 例項(物件):
使用建構函式建立出來的物件被稱為該建構函式的一個例項物件。 - 注意點:我們在說例項物件的時候,需要指明建構函式
例如:某個物件是哪個建構函式的例項物件 - 例項成員:例項物件上面的屬性和方法
原型成員:建構函式原型物件上面的屬性和方法 - hasOwnProperty
- 作用:是否擁有指定的例項屬性(不包含原型成員)
- 使用方法:物件.hasOwnProperty("例項屬性")
- in關鍵字
- 檢查物件中是否存在某個指定的屬性(例項成員 + 原型成員)
- 使用方法:"例項成員或原型成員" in 物件
- delete關鍵字
- 作用:刪除物件中的屬性
- 使用方法:delete 物件.屬性
- 注意:
刪除沒有使用var宣告的變數
通常情況下,宣告變數需要使用var關鍵字,預設所有的全域性變數都會成為window的屬性
特殊情況下,不適用var直接賦值也能宣告一個變數 ,預設會成為一個全域性的變數
使用var宣告的全域性變數可以被刪除嗎? 不可以
直接新增在window上面的屬性可以被刪除嗎? 可以
- 例子:
function Person(name) {
this.name = name;
}
Person.prototype.hi = "hi";
var p1 = new Person();
語法 物件.hasOwnProperty("屬性")
console.log(p1.hasOwnProperty("name")); //true
console.log(p1.hasOwnProperty("age")); //false
console.log(p1.hasOwnProperty("hi")); //false
語法 “屬性” in 物件
console.log("name" in p1); //true
console.log("age" in p1); //false
console.log("hi" in p1); //true
- isPrototypeOf
- 作用:判斷是否是原型物件。
- 使用方法: isPrototypeOf(物件)
- 構造器屬性(constructor):
- 物件的constructor是原型物件上面的constructor屬性,物件本身並沒有這個屬性
- 建構函式的原型物件(相互關聯),原型物件通過constructor屬性(自己的)來關聯建構函式
- 原型物件上面有兩個構造器屬性(自己的 + 原型的)
- Object.create()
- 作用:建立物件並且設定原型物件
- 使用方法:建立一個空的物件o,並且設定這個物件的原型物件是obj
- 例子:
var o = Object.create(obj);
- 注意:相容性處理(ES5)
- Object.assign()
- 作用:用來拷貝屬性的,一次性拷貝多個物件的屬性
- 用法:Object.assign(目標物件,要拷貝屬性的物件1,要拷貝屬性的物件2,要拷貝屬性的物件3)
- 注意點:
新特性有相容性問題
原型成員是否能夠拷貝 不能(預設不會拷貝原型成員)
使用for..in遍歷拷貝物件的時候,會連同該物件的原型成員一起拷貝 - call和apply函式(重要)
- 來源:所有的物件方法都擁有這兩個函式(方法),這兩個方法寫在Function.prototype上面
- 作用:借用其他物件的方法
- 用法:
物件1.方法.call(借用者物件,引數1,引數2,引數3...)
物件1.方法.apply(借用者物件,[引數1,引數2,引數3...]) - 區別(傳遞引數):
引數傳遞不一樣
期望的形參長度不一樣:
* 函式.length 形參的個數
* call:length 1 期望傳遞一個引數
* apply:length 2 期望傳遞兩個引數
相關文章
- php物件導向知識點PHP物件
- 物件導向知識點總結歸納物件
- 初識物件導向物件
- 【Java基礎知識】物件導向有哪些特性Java物件
- php物件導向知識 this,self,parent的區別PHP物件
- PHP物件導向中的重要知識點(一)PHP物件
- PHP物件導向中的重要知識點(二)PHP物件
- PHP物件導向中的重要知識點(三)PHP物件
- java物件導向程式設計的基本知識Java物件程式設計
- Java常見知識點彙總(③)——物件導向基礎Java物件
- Java 物件導向基礎 以及進階知識 總結Java物件
- python 初識物件導向Python物件
- 物件導向-物件導向思想物件
- 2.1.0 Python初識物件導向Python物件
- day09_認識物件導向物件
- Objective-C 基礎一:物件導向過程基礎知識Object物件
- C/C++知識要點總結之C++物件導向C++物件
- 小邵教你玩轉JS物件導向JS物件
- 程式導向與物件導向物件
- 物件導向與程式導向物件
- “程序導向”和“物件導向”物件
- 關於一些php面試之物件導向的相關知識PHP面試物件
- 物件導向物件
- 物件導向,搞定物件物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- JAVA物件導向基礎--物件導向介紹Java物件
- 從程式導向到物件導向物件
- Python之物件導向基礎小練Python物件
- 【Kotlin】初識Kotlin之物件導向Kotlin物件
- 物件導向(下)物件
- 物件導向 -- 反射物件反射
- PHP物件導向PHP物件
- Java — 物件導向Java物件
- JavaScript 物件導向JavaScript物件
- JS物件導向JS物件
- 物件導向(上)物件
- scala物件導向物件
- 物件導向--下物件