首頁  >  文章  >  web前端  >  Javascript Object 物件學習筆記_基礎知識

Javascript Object 物件學習筆記_基礎知識

WBOY
WBOY原創
2016-05-16 16:26:10966瀏覽

建構子
new Object()

new Object(value)

參數
value
    可選的參數,宣告了要轉換成Number物件、Boolean物件或String物件的原始值(即數字、布林值或字串)。 JavaScript 1.1之前的版本和ECMAScript Vl不支援該物件。

回傳值

  如果沒有給建構函式傳遞value參數,那麼它將傳回一個 新建立的Object實例。如果指定了原始的value參數,建構函式將會建立並傳回原始值的包裝對象,即Number對象、Boolean對像或 String對象。當不使用new運算符,將Object()建構函數當作函數呼叫時,它的行為與使用new運算符時相同。

屬性
constructor
一個JavaScript函數的引用,該函數是物件的建構子

方法

1.hasOwnProperty( )
檢查物件是否有局部定義的(非繼承的)、具有特定名字的屬性。

複製程式碼 程式碼如下:

   

2.isPrototypeOf()

文法
object.isPrototypeOf(o)

參數
o
任意對象。


傳回值
如果object是O的原型,則傳回true。如果o不是對象,或object不是o的原 型,則傳回false。

描述
JavaScript物件繼承了原型物件的屬性。一個物件的原型是透過用於建立並初始化該物件的建構函數的prototype屬性來引用的。 isPrototypeOf()方法提供了判斷一個物件是否為另一個物件原型的方法。此方法可以用於確定物件的 類別。

範例

複製程式碼 程式碼如下:

var o = new Object(  );                          //建立物件中
Object.prototype.isPrototypeOf(o)                // true: o 是物件
Function.prototype.isPrototypeOf(o.toString);    // true: toString 是函數
Array.prototype.isPrototypeOf([1,2,3]);          // true: [1,2,3] 為陣列
//下面是另一種執行同樣測試的方法
(o.constructor == Object);  // true: o was created with Object(  ) constructor
(o.toString.constructor == Function);  // true: o.toString is a function
/原型則物件本身於原型物件。下面的呼叫回傳true
//說明函數繼 Function.prototype和Object.prototyp屬性.
Object.prototype.isPrototypeOf(Function.prototype);

3.ProertyIsEnumerable()

文法
object.propertyIsEnumerable(propname)

參數
propname
一個字串,包含object原型的名字。

傳回值
如果object具有名為propname的非繼承屬性,且該屬性是可列舉的(即用for/in循環可以列舉它),則傳回true。

描述
用for/in語句可以遍歷一個物件「可枚舉」的屬性。但並非—個物件的所有屬性都是可枚舉的,透過JavaScript程式碼加入物件的屬性是可列舉的,而內部物件的預先定義屬性(如方法)通常是不可列舉的。 propertylsEnumerable()方法提供了區分可枚舉屬性和不可枚舉屬性的方法。但要注意,ECMAScript標準規定,propertyIsEnumerable()方法不偵測原型鏈,這意味著它只適用於物件的局部屬性,不能偵測繼承屬性的可枚舉性。

範例

複製程式碼 程式碼如下:

var o = new Object(  );                //建立物件
o.x = 3.14;                            //定義-一個屬性
o.propertyIsEnumerable("x");           // true屬性x是局部的、可列舉的
o.propertyIsEnumerable("y");           //false:o沒有屬性y
o.propertyIsEnumerable("toString");    //false:toStrlng屬性是繼承的
Object.prototype.propertyIsEnumerable("toString");  // false: 枚舉的

Bug

當標準限制propertylsEnumerable()方法只能偵測非繼承屬性時,明顯是錯的。 Internet Explorer 5.5依標準實作了此方法。 Nestacpe 6.0實作的propertyIsEnumerable()方法考慮了原型鏈。雖然這種方法可取,但它與標準衝突,所以Netscape 6.1修改了它,以便與IE 5.5匹配。由於標準中有這個錯誤,因此該方法不是那麼有用。

複製程式碼 程式碼如下:

<script><br />  var obj = new Object(); <br />      obj.title = 'aaa'; <br />      obj.funb = function(a, b) <br />         { <br />          alert(a b); <br />         } <br />     alert(obj.title);<br />     obj.funb(1,2);<br /> </script>

這裡一種方法
******************************

複製程式碼 程式碼如下:


這是另一種方法

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn