在javascript中,數據類型主要分為原始類型和引用類型,所有引用類型都來自對象的副本,本文是錯新技術頻道小編給大家帶來的Object對象的一些的隱藏函數介紹,一起來看看吧!
該屬性被定義在類的prototype中,當對象實例創建后通過__proto__鏈可被對象實例所調用,并指向當前類的構造函數。以此可判斷某個對象直接所屬的類是哪個(與instanceof不同,instanceof并不局限于對象直接所屬的類,即使是父類也返回true)。
[示例]
trace(Object.prototype.constructor?==?Object);??//輸出?true
var?a?=?new?Object();
trace(a.constructor?==?Object);??//輸出?true
var?b?=?new?Array();
trace(b.constructor?==?Array);??//輸出?true
trace(b.constructor?==?Object);??//輸出?false
trace(b?instanceof?Object);??//輸出?true
屬性:Object.__constructor__
該屬性功能和Object.constructor相似,區別在于它不是定義在類的prototype中的,而是當對象實例創建時附加到對象實例上的。同時,該屬性也被super關鍵字作為父類構造函數使用時所隱含調用,用于指向父類的構造函數,即super(...)等價于?this.__constructor__.call(this,?...)。
[示例]
trace(Object.prototype.__constructor__?==?Object);??//輸出?false
var?a?=?new?Object();
trace(a.__constructor__?==?Object);??//輸出?true
var?b?=?new?Array();
trace(b.__constructor__?==?Array);??//輸出?true
trace(b.__constructor__?==?Object);??//輸出?false
方法:Object.isPrototypeOf(classFunc)
該方法用來判斷當前對象是否在對象obj的__proto__鏈中。該方法可用來判斷一個類是否另一個類的父類或子類。
[示例]
trace(Object.prototype.isPrototypeOf(new?Object()));??//輸出?true
trace(Object.prototype.isPrototypeOf(new?Array()));??//輸出?true
trace(Array.prototype.isPrototypeOf(new?Object()));??//輸出?false
trace(Object.prototype.isPrototypeOf(Array.prototype));??//判斷Object是否Array的父類,輸出?true
方法:Object.isPropertyEnumerable(propName)
該方法用來判斷名為propName的成員是否在當前對象中存在并且可被列舉(使用for..in),換句話說也就是是否可見(使用ASSetPropFlags全局函數可設置對象屬性是否可見)。
[示例]
var?a?=?{x:1,?y:2};
ASSetPropFlags(a,?["y"],?1);??//設y為不可見
trace(a.y);??//仍可輸出?2
for?(var?i?in?a)?trace(i);??//僅輸出?x
trace(a.isPropertyEnumerable("x"));??//輸出?true
trace(a.isPropertyEnumerable("y"));??//輸出?false
方法:Object.hasOwnProperty(propName)
該方法用來判斷名為propName的成員是否是當前對象自己的成員,而非通過__proto__鏈從類的prototype中引用過來的。
[示例]
function?test?()?{}
test.prototype.x?=?1;
var?a?=?new?test();
a.y?=?2;
trace(a.x);??//輸出?1
trace(a.hasOwnProperty("x"));??//輸出?false
trace(a.y);??//輸出?2
trace(a.hasOwnProperty("y"));??//輸出?true
方法:Object.toString()
該方法可定義一個對象在轉換成字符串類型時所產生的字符串結果,一般定義在類的prototype中。
[示例]
function?point?(x,?y)?{
?this.x?=?x;
?this.y?=?y;
}
point.prototype.toString?=?function?()?{
?return?"[x:"?+?this.x?+?",?y:"?+?this.y?+?"]";
};
var?pos?=?new?point(10,?20);
trace("position?is?"?+?pos);??//輸出?position?is?[x:10,?y:20]?
以上就是關于Object對象的一些的隱藏函數介紹,相信大家已經有了清晰的了解,更多的技術頻道的知識盡在錯新技術頻道!
新聞熱點
疑難解答