Javascript 物件的三屬性

2021-08-03 19:10:01 字數 1731 閱讀 7094

先定義物件

function person(name,age)

this.setname=function(name)

this.setage=function(age)

}var person = new person('xiao', 21);

function chinese()

}chinese.prototype=person;

var chinese = new chinese();

1.物件的prototype屬性

var proto = object.getprototypeof(chinese); //獲取物件的prototype

document.writeln(proto===person); //=>true

document.writeln(person.isprototypeof(chinese)); //=>true 判斷是否是物件的原型

2.物件的class 屬性

物件的class屬性是乙個字串,用來描述物件的類資訊。物件的class屬性可以通過物件的tostring()獲得。但是tostring()經常被重寫,必須間接地呼叫function.call方法

function classof(o)

document.writeln(classof(person)); //=>object

document.writeln(classof(1)); //=>number

3.物件的可擴充套件性

/*物件的可擴充套件性用以表示是否可以給物件新增新屬性,所有內建物件和自定義物件都是顯示可擴充套件的*/

var newperson = object.preventextensions(person); //將物件改為不可擴充套件的,返回修改後的物件

document.writeln(object.i***tensible(person)); //=>false, 判斷物件是否可擴充套件

person.high=170;

newperson.high=170;

document.writeln(person.high); //=>undefined

document.writeln(newperson.high); //=>undefined

除了將物件設定為不可擴充套件的,還可將物件的自有屬性設定為不可配置的

var newperson1 = object.seal(person); //封閉person

document.writeln(object.issealed(person)); //=>true, person已被封閉

除了將物件設為不可擴充套件的和將其屬性設為不可配置的外,還將它所有的自有屬性設定為唯讀的

var newperson2 = object.freeze(person); //凍結person

document.writeln(object.isfrozen(person)); //=>true, person已被凍結

* 注意:

1. 一旦將物件轉為不可擴充套件的,就無法將其轉為可擴充套件的了。seal(), freeze()同樣也是不可逆的。

2. preventextensions只影響到物件本身的可擴充套件性。如果給乙個不可擴充套件物件的原型新增屬性,則這個不可擴充套件物件將會繼承新屬性。

JavaScript事件event物件屬性

ie和ff獲取事件的不同 var e window.event e.target event 物件只在事件發生的過程中才有效。阻止事件預設行為 ie window.event.returnvalue true ff e.preventdefault 阻止事件冒泡行為 ie window.event....

JavaScript 判斷物件中是否有某屬性

通過點或者方括號可以獲取物件的屬性值,如果物件上不存在該屬性,則會返回undefined。當然,這裡的 不存在 指的是物件自身和原型鏈上都不存在,如果原型鏈有該屬性,則會返回原型鏈上的屬性值。建立物件 let test 獲取物件的自身的屬性 test.name lei test name lei 獲...

javascript物件導向 三

物件導向三大特徵 封裝 繼承 多型 封裝 將 封裝到函式中,不允許外部訪問內部成員的屬性和方法,對外提供唯一的訪問介面。繼承 通過物件繼承另乙個物件的屬性和方法,並進行擴充套件開發和維護。繼承擁有單根性和傳遞性。多型 乙個介面方式,根據引數的不同實現不同的狀態 前端沒有多型,只有偽多型 封裝的優勢 ...