摘要:宿主對象指的是運行環(huán)境提供的對象。不過類型是中所有類型的父級所有類型的對象都可以使用的屬性和方法可以通過的構(gòu)造函數(shù)來創(chuàng)建自定義對象。當以非構(gòu)造函數(shù)形式被調(diào)用時,等同于。對象初始化器方式使用對象初始化器也被稱作通過字面值創(chuàng)建對象。
對象 概述
在JavaScript中的對象,和其他編程語言中的對象一樣,可以比照現(xiàn)實生活中的對象來理解它。
對象的分類1.內(nèi)置對象/原生對象
就是JavaScript運行環(huán)境提供的對象。在ECMAScript標準定義,由JavaScript解釋器/引擎提供具體實現(xiàn)。
2.宿主對象
指的是JavaScript運行環(huán)境提供的對象。一般是由瀏覽器廠商提供實現(xiàn)的(目前也有獨立的JavaScript解釋器/引擎提供實現(xiàn)),主要分為BOM和DOM。
3.自定義對象
就是由開發(fā)人員自主創(chuàng)建的對象。
Object類型與Array、Math等一樣都是JavaScript的引用類型。不過Object類型是JavaScript中所有類型的父級(所有類型的對象都可以使用Object的屬性和方法).
JavaScript可以通過Object的構(gòu)造函數(shù)來創(chuàng)建自定義對象。當以非構(gòu)造函數(shù)形式被調(diào)用時,Object等同于new Object()。
Object對象的方法分為自有方法和原型方法兩種:
1.自由方法
a.creat() 值原定對象和屬性來創(chuàng)建一個新的對象
b.getOwnPropetyNames() 返回一個數(shù)組,它包含了指定對象所有的可枚舉或不可枚舉的屬性名。
c.keys() 返回一個數(shù)組,包含指定對象的所有自由可遍歷屬性的名稱。
2.原型方法
prototype.hasOwnProperty() 返回一個布爾值,該值指示對象是否包含制定的屬性。
使用對象初始化器也被稱作通過字面值創(chuàng)建對象。通過對象初始化器創(chuàng)建對象的語法如下:
var 函數(shù)名 ={ 屬性名:屬性值, 方法名:function(){ } }
示例代碼如下:
var obj1 = { name:"EVA", age:14, sayMe:function(){ console .log("EVA001"); } }對象構(gòu)造函數(shù)方式
利用Object作為構(gòu)造函數(shù)創(chuàng)建對象
var 對象名 = new Object();
var 對象名 = Object();
var obj2 = new Object(); var obj3 = Object(); console.log(obj2);// {} console.log(obj3);// {} var obj4 = new Object(undefined); var obj5 = new Object(null); console.log(obj4); console.log(obj5);利用Object.create()方法創(chuàng)建對象
var 對象名 = Object.create(null) -> 創(chuàng)建一個空對象
var 對象名 = Object.create(obj)
obj - 表示另一個對象
特點 - 當前創(chuàng)建的新對象擁有與obj對象相同的屬性和方法
var obj6 = Object.create(null); var obj7 = Object.create(obj1); console.log(obj6); console.log(obj7);創(chuàng)建空對象的方法
1.var obj1 = {};
2.var obj2 = new Object();
3.var obj3 = Object();
4.var obj4 = new Object(undefined);
5.var obj5 = new Object(null);
6.var obj6 = Object(undefined);
7.var obj7 = Object(null);
8.var obj8 = Object.create(null);
var obj1 = { name : "123", sayMe : function(){ console.log("THIS IS 123"); } } console.log(obj1); var obj2 = obj1; console.log(obj2); // 修改obj1對象的name屬性值 obj1.name = "456"; console.log(obj1); console.log(obj2);調(diào)用對象的屬性
var obj = { name:"Chambers", "Type-Content":"text/html", sayMe : function(){ console .log("Gemini"); } }
1.對象名.屬性名(不適用于復(fù)雜命名的屬性)
console .log(obj.name);//輸出結(jié)果:Chambers
2.對象名[屬性名]-通用的調(diào)用方式,適用于復(fù)雜命名的屬性名稱
console .log(obj["name"]);//輸出結(jié)果:Chambers
注意:當訪問一個對象不存在的屬性的值為undefined
var obj = { name : "張無忌", sayMe : function(){ console.log("我是張無忌"); } } /* 1.對象名.新的屬性名 = 屬性值 2.對象名[新的屬性名] = 屬性值 */ obj.age = 18; console.log(obj);
空對象默認沒有自身的屬性和方法(有父級Object的)
var obj1 = {}; console .log(obj1); obj1.name = "EVA"; console .log(obj1);修改對象的屬性
1.對象名.已存在的屬性名 = 屬性值
2.對象名.[已存在的屬性名] = 屬性值
var obj { name :"GEMINI"; sayMe : function(){ console .log("this is eva"); } } obj.name = "eva"; console .log(obj);刪除對象的屬性
1.delete 對象名.屬性名
2.delete 對象名[屬性名]
var obj ={ name:"EVA", sayMe:function(){ console .log("this is eva"); } } delete obj.name; console .log(obj.name);//undefined檢測對象的屬性
var obj = { name : "張無忌", age : 18 } console.log(obj.age);// undefined // 1.判斷對象的屬性值是否為 undefined if (obj.age !== undefined) { console.log("obj對象的age屬性存在..."); } else { console.log("請先定義obj對象的age屬性..."); } // 2.判斷對象的屬性值 - 先轉(zhuǎn)換為Boolean類型 if (obj.age) { console.log("obj對象的age屬性存在..."); } // 3.利用in關(guān)鍵字進行判斷 if ("age" in obj) { console.log("obj對象的age屬性存在..."); } else { console.log("obj對象的age屬性不存在...") } // 4.Object類型提供了hasOwnProperty()方法 if (obj.hasOwnProperty("age")) { console.log("obj對象的age屬性存在..."); } else { console.log("obj對象的age屬性不存在...") }遍歷對象的屬性
var obj = { name : "張無忌", age : 18, sayMe : function(){ console.log("我是張無忌"); } } // 1.for...in語句 for (var objAttr in obj) { // 通過對象屬性或方法對應(yīng)的值的類型進行區(qū)別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } } // 2.Object類型提供了keys()方法 - 只能遍歷可枚舉的屬性 var arr = Object.keys(obj); for (var v in arr) { var objAttr = arr[v]; // 通過對象屬性或方法對應(yīng)的值的類型進行區(qū)別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } } // 3.Object類型提供了getOwnPropertyNames()方法 - 包括不可枚舉的屬性 var arr = Object.getOwnPropertyNames(obj); for (var v in arr) { var objAttr = arr[v]; // 通過對象屬性或方法對應(yīng)的值的類型進行區(qū)別 if (obj[objAttr] instanceof Function) { // 當前是對象的方法 obj[objAttr](); } else { // 當前是對象的屬性 console.log(obj[objAttr]); } }調(diào)用對象的方法
var obj = { name : "EVA", age : 14, sayMe : function(){ console.log("this is eva"); } } // 1.對象名.方法名() obj.sayMe(); // 2.對象名[方法名]() obj["sayMe"]();新增對象的方法
var obj = { name : "eva", age : 18, sayMe : function(){ console.log("this is eva"); } } // 1.對象名.新的方法名 = function(){} obj.sayYou = function(){ console.log("shinji"); } console.log(obj); // 2.對象名[新的方法名] = function(){}修改對象的方法
1.對象名.方法名 = function(){}
2.對象名[方法名] = function(){}
var obj = { name : "EVA", age : 18, sayMe : function(){ console.log("this is eva"); } } obj.sayMe = function(){ console.log("shinji"); } console.log(obj); obj.sayMe();刪除對象的方法
1.delete 對象名.方法名
2.delete 對象名[方法名]
var obj = { name : "張無忌", age : 18, sayMe : function(){ console.log("我是張無忌"); } } delete obj.sayMe; // 訪問對象中不存在的方法 -> 報錯(TypeError: obj.sayMe is not a function) // obj.sayMe(); console.log(obj.sayMe);// undefined console.log(obj); // 以屬性是否存在的方式進行判斷 if ("sayMe" in obj) { // 確認目前是一個方法 if (obj.sayMe instanceof Function) { obj.sayMe();// 方法調(diào)用 } } // 以上代碼可以優(yōu)化為以下代碼 if ("sayMe" in obj && obj.sayMe instanceof Function) { obj.sayMe();// 方法調(diào)用 }
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108140.html
摘要:網(wǎng)上有很多前端的學習路徑文章,大多是知識點羅列為主或是資料的匯總,數(shù)據(jù)量讓新人望而卻步。天了解一個前端框架。也可以關(guān)注微信公眾號曉舟報告,發(fā)送獲取資料,就能收到下載密碼,網(wǎng)盤地址在最下方,獲取教程和案例的資料。 前言 好的學習方法可以事半功倍,好的學習路徑可以指明前進方向。這篇文章不僅要寫學習路徑,還要寫學習方法,還要發(fā)資料,干貨滿滿,準備接招。 網(wǎng)上有很多前端的學習路徑文章,大多是知...
摘要:無狀態(tài)的價值無狀態(tài)可以僅用很少的對象就可以處理很多的用戶,空閑狀態(tài)的用戶越多,無狀態(tài)服務(wù)器就越有用會話狀態(tài)相關(guān)性會話狀態(tài)只與當前會話有關(guān),它存在于業(yè)務(wù)事務(wù)中,與其他會話及他們的業(yè)務(wù)事務(wù)是分開的與記錄數(shù)據(jù)信息的區(qū)別記錄數(shù)據(jù)時長期保存在數(shù)據(jù)庫中 1. 無狀態(tài)的價值: 無狀態(tài)可以僅用很少的對象就可以處理很多的用戶,空閑狀態(tài)的用戶越多,無狀態(tài)服務(wù)器就越有用 2. 會話狀態(tài): 相關(guān)性:會話狀態(tài)只...
摘要:路由路由通俗解釋根據(jù)不同地址,出現(xiàn)不同效果,一般是用來寫應(yīng)用,單頁面應(yīng)用這里用的是版本一個路由的基本結(jié)構(gòu)跟用法引入路由文件主頁跳轉(zhuǎn)鏈接里面也是寫新聞?wù)故緝?nèi)容準備一個根組件組件都準備我是主頁我是新聞準備路由關(guān)聯(lián)啟動路由是作用范圍 vue 路由 路由通俗解釋:根據(jù)不同url地址,出現(xiàn)不同效果,一般是用來寫SPA應(yīng)用,單頁面應(yīng)用 這里用的是vue-router 0.7.13版本一個路由的基本...
閱讀 1014·2021-11-25 09:43
閱讀 1677·2019-08-30 13:59
閱讀 1604·2019-08-30 11:22
閱讀 2132·2019-08-30 11:06
閱讀 1306·2019-08-28 17:51
閱讀 3736·2019-08-26 12:12
閱讀 787·2019-08-26 12:11
閱讀 454·2019-08-26 12:10