20170607 物件導向03 判斷物件型別的方法

2021-09-16 20:04:26 字數 2622 閱讀 4568

每個物件的原型上都有乙個constructor屬性,指向了其建構函式

function person()

var person = new person();

person.constructor === person // true

person.constructor === object // false

var object =

object.constructor === object // true

function person()

person.prototype =

var p1 = new person()

p1.constructor === person //false

function person()

person.prototype =

var p1 = new person()

p1.constructor === person // true

instanceof運算子用來測試乙個物件在其原型鏈中是否存在乙個建構函式的原型物件(通俗的講就是判斷乙個物件的原型鏈上是否存在乙個建構函式的原型物件)

function person()

var person = new person();

person instanceof person // true

person instanceof object // true

var object =

object instanceof object // true

function person()

var p1 = new person()

p1 instanceof person // true

person.prototype =

// p1是修改建構函式原型物件之前建立的物件

// p1的__proto__仍然指向原來的原型物件

p1 instanceof person // false

// p2是修改建構函式原型物件之後建立的物件

var p2 = new person()

p2 instanceof person // true

object.getprototypeof()可以獲取物件的原型。這種方法也存在這樣的問題:如果修改了建構函式的原型物件,之前建立的物件無法通過這種方式來確定型別

function person()

var p1 = new person()

object.getprototypeof(p1) === person.prototype // true

object.getprototypeof(p1) === object.prototype // false

person.prototype =

// p1是修改建構函式原型物件之前建立的物件

// p1的__proto__仍然指向原來的原型物件

object.getprototypeof(p1) === person.prototype // false

// p2是修改建構函式原型物件之後建立的物件

var p2 = new person()

object.getprototypeof(p2) === person.prototype // true

isprototypeof()方法可以判斷乙個物件是否存在於另乙個物件的原型鏈上。這種方法也存在這樣的問題:如果修改了建構函式的原型物件,之前建立的物件無法通過這種方式來確定型別

function person()

var p1 = new person()

person.prototype.isprototypeof(p1) // true

object.prototype.isprototypeof(p1) //true

person.prototype =

person.prototype.isprototypeof(p1) // false

object.prototype.isprototypeof(p1) //true

var p2 = new person()

person.prototype.isprototypeof(p2) // true

object.prototype.isprototypeof(p2) //true

instance instanceof object //true

instance instanceof supertype // true

instance instanceof subtype //true

object.prototype.isprototypeof(instance) // true

supertype.prototype.isprototypeof(instance) // true

subtype.prototype.isprototypeof(instance) // true

物件導向 03

類屬性和例項屬性的概念 類屬性是給類物件 類是乙個特殊的物件 中定義的屬性,通常用來記錄與這個類相關的特徵,類屬性不會用於記錄具體物件的特徵。類屬性的定義是在初始化方法之外的 例項物件的屬性叫做例項屬性,在初始化方法內部定義 類屬性和例項屬性的訪問 類屬性的訪問是類名.類屬性 例項屬性的訪問是例項物...

物件導向03

將資料 屬性 和行為 方法 包裝到類物件中,在方法內部對屬性進行操作,在類物件的外部呼叫方法 在類物件的內部通過訪問控制把某些屬性和方法隱藏起來,不允許在類物件外部直接訪問,而是在類物件內部對外提供公開的介面方法以訪問隱藏的資訊。介面class student object def init sel...

物件導向03

1.static 靜態的 靜態不能直接呼叫非靜態,非靜態可以呼叫靜態 1 靜態變數 物件共有的屬性可以定義為靜態 1.1 由static修飾 1.2 屬於類的,存在方法區中,只有乙份,隨著類載入而使用 1.3 常常通過類名.來訪問 1.4 何時用 所有物件的資料一樣時使用 2 靜態方法 2.1 由s...