Javascript Object 對(duì)象學(xué)習(xí)筆記
構(gòu)造函數(shù)
new Object()
new Object(value)
參數(shù)
value
可選的參數(shù),聲明了要轉(zhuǎn)換成Number對(duì)象、Boolean對(duì)象或String對(duì)象的原始值(即數(shù)字、布爾值或字符串)。JavaScript 1.1之前的版本和ECMAScript Vl不支持該對(duì)象。
返回值
如果沒有給構(gòu)造函數(shù)傳遞value參數(shù),那么它將返回一個(gè) 新創(chuàng)建的Object實(shí)例。如果指定了原始的value參數(shù),構(gòu)造函數(shù)將創(chuàng)建并返回原始值的包裝對(duì)象,即Number對(duì)象、Boolean對(duì)象或 String對(duì)象。當(dāng)不使用new運(yùn)算符,將Object()構(gòu)造函數(shù)作為函數(shù)調(diào)用時(shí),它的行為與使用new運(yùn)算符時(shí)一樣。
屬性
constructor
對(duì)一個(gè)JavaScript函數(shù)的引用,該函數(shù)是對(duì)象的構(gòu)造函數(shù)
方法
1.hasOwnProperty( )
檢查對(duì)象是否有局部定義的(非繼承的)、具有特定名字的屬性。
<script type="text/javascript">
var o = new Object();
o.name="Tom";
alert(o.hasOwnProperty("name")); //true
alert(o.hasOwnProperty("age")); //false
</script>
2.isPrototypeOf()
語法
object.isPrototypeOf(o)
參數(shù)
o
任意對(duì)象。
返回值
如果object是O的原型,則返回true。如果o不是對(duì)象,或者object不是o的原 型,則返回false。
描述
JavaScript對(duì)象繼承了原型對(duì)象的屬性。一個(gè)對(duì)象的原型是通過用于創(chuàng)建并初始化該對(duì)象的構(gòu)造函數(shù)的prototype屬性引用的。isPrototypeOf()方法提供了判斷一個(gè)對(duì)象是否是另一個(gè)對(duì)象原型的方法。該方法可以用于確定對(duì)象的 類。
示例
var o = new Object( ); // 創(chuàng)建一個(gè)對(duì)象
Object.prototype.isPrototypeOf(o) // true: o 是一個(gè)對(duì)象
Function.prototype.isPrototypeOf(o.toString); // true: toString 是一個(gè)函數(shù)
Array.prototype.isPrototypeOf([1,2,3]); // true: [1,2,3] 是一個(gè)數(shù)組
//下面是執(zhí)行同樣測試的另一種方法
(o.constructor == Object); // true: o was created with Object( ) constructor
(o.toString.constructor == Function); // true: o.toString is a function
/原型則對(duì)象本身于原型對(duì)象。下面的調(diào)用返回true
//說明函數(shù)繼 Function.prototype和Object.prototyp屬性.
Object.prototype.isPrototypeOf(Function.prototype);
3.ProertyIsEnumerable()
語法
object.propertyIsEnumerable(propname)
參數(shù)
propname
一個(gè)字符串,包含object原型的名字。
返回值
如果object具有名為propname的非繼承屬性,而且該屬性是可枚舉的(即用for/in循環(huán)可以枚舉出它),則返回true。
描述
用for/in語句可以遍歷一個(gè)對(duì)象“可枚舉”的屬性。但并非—個(gè)對(duì)象的所有屬性都是可枚舉的,通過JavaScript代碼添加到對(duì)象的屬性是可枚舉的,而內(nèi)部對(duì)象的預(yù)定義屬性(如方法)通常是不可枚舉的。propertylsEnumerable()方法提供了區(qū)分可枚舉屬性和不可枚舉屬性的方法。但要注意,ECMAScript標(biāo)準(zhǔn)規(guī)定,propertyIsEnumerable()方法不檢測原型鏈,這意味著它只適用于對(duì)象的局部屬性,不能檢測繼承屬性的可枚舉性。
示例
var o = new Object( ); // 創(chuàng)建一個(gè)對(duì)象
o.x = 3.14; // 定義—個(gè)屬性
o.propertyIsEnumerable("x"); // true屬性x是局部的、可枚舉的
o.propertyIsEnumerable("y"); //false:o沒有屬性y
o.propertyIsEnumerable("toString"); //false:toStrlng屬性是繼承的
Object.prototype.propertyIsEnumerable("toString"); // false: 枚舉的
Bug
當(dāng)標(biāo)準(zhǔn)限制propertylsEnumerable()方法只能檢測非繼承屬性時(shí),明顯是錯(cuò)的。 Internet Explorer 5.5按標(biāo)準(zhǔn)實(shí)現(xiàn)了該方法。Nestacpe 6.0實(shí)現(xiàn)的propertyIsEnumerable()方法考慮了原型鏈。雖然這種方法可取,但它與標(biāo)準(zhǔn)沖突,所以Netscape 6.1修改了它,以便與IE 5.5匹配。由于標(biāo)準(zhǔn)中有這個(gè)錯(cuò)誤,因此該方法不是那么有用。
<script>
var obj = new Object();
obj.title = 'aaa';
obj.funb = function(a, b)
{
alert(a+b);
}
alert(obj.title);
obj.funb(1,2);
</script>
這里一種方法
******************************
<script language="javascript">
function object(value,a,b){
this.title = value;
this.funb = function(){
this.a = a;
this.b = b;
alert(a+b);
}
}
var obj = new object("aaa",1,2);
alert(obj.title);
obj.funb();
//這里為對(duì)象添加新的方法
object.prototype.name = "123456";
alert(obj.name);
</script>
這是另一種方法
相關(guān)文章
JavaScript中使用指數(shù)方法Math.exp()的簡介
這篇文章主要介紹了JavaScript中使用指數(shù)方法Math.exp(),是JS入門學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06JavaScript 學(xué)習(xí)筆記之變量及其作用域
前篇文章我們介紹了學(xué)習(xí)javascript所需要的基礎(chǔ)中的基礎(chǔ)知識(shí),今天我們來更進(jìn)一步,學(xué)習(xí)下javascript變量及其作用域,希望小伙伴們通過本文能夠有所得。2015-01-01Javascript排序算法之合并排序(歸并排序)的2個(gè)例子
這篇文章主要介紹了Javascript排序算法之合并排序(歸并排序)的2個(gè)例子,需要的朋友可以參考下2014-04-04javascript驗(yàn)證form表單數(shù)據(jù)的案例詳解
這篇文章主要介紹了javascript驗(yàn)證form表單數(shù)據(jù),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03THREE.JS入門教程(5)你應(yīng)當(dāng)知道的十件事
Three.js是一個(gè)偉大的開源WebGL庫,WebGL允許JavaScript操作GPU,在瀏覽器端實(shí)現(xiàn)真正意義的3D,本文會(huì)讓你了解一下使用THREE.JS處理3D/避免SetInterval/使用倒序循環(huán)等等,感興趣的朋友可以了解下哦2013-01-01javascript中attribute和property的區(qū)別詳解
這篇文章主要介紹了javascript中attribute和property的區(qū)別詳解,attribute和property對(duì)新手來說,特別容易混淆概念,本文就清晰的講解了它們的區(qū)別,需要的朋友可以參考下2014-06-06