Javascript Object 對象學習筆記,object學習筆記

來源:互聯網
上載者:User

Javascript Object 對象學習筆記,object學習筆記

建構函式
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( )
檢查對象是否有局部定義的(非繼承的)、具有特定名字的屬性。

複製代碼 代碼如下:
    <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)

參數
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>
 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();
//這裡為對象添加新的方法
object.prototype.name = "123456";
alert(obj.name);
</script>

這是另一種方法

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.