⑴ 用JavaScript構建對象,只能通過set和unset方法存儲鍵值對,並隱藏存儲內容
你想要的是利用JS實現一個只能通過set和unset方式訪問的數據存儲對象吧,通過以下方式可以實現:
functionHashKey(){
vardata={};
this.set=function(key,value){//set方法
data[key]=value;
};
this.unset=function(key){//unset方法
deletedata[key];
};
this.get=function(key){//get方法
returndata[key]||"";
}
}
//測試代碼
varhash_1=newHashKey();
hash_1.set("abc",1);
console.log(hash_1.get("abc"));
hash_1.unset("abc");
console.log(hash_1.get("abc"));
⑵ js中向對象中添加屬性的兩種方法
1.1 數據屬性(`properties`),對象的普通屬性將字元串名稱映射到值。例如,下面對象obj有一個數據屬性,名稱為 prop,對應的值為 123:var obj = {prop: 123};可以用以下方式讀取屬性的值:console.log(obj.prop); // 123,console.log(obj["prop"]); // 123,當然也可以用以下方式來設置屬性的值:obj.prop = "abc";obj["prop"] = "abc";
1.2 訪問器屬性,另外,可以通過函數處理獲取和設置屬性值。 這些函數稱為訪問器函數。 處理獲取的函數稱為getter。 處理設置的函數稱為setter:var obj = {get prop () {return 'Getter';},set prop (value) {console.log('Setter: ' + value);}}訪問 obj 屬性:> obj.prop'Getter'> obj.prop = 123;Setter: 123。
1.3 內部屬性一些屬性只是用於規范,這些屬於「內部」的屬性,因為它們不能直接訪問,但是它們確實影響對象的行為。內部屬性有特殊的名稱都寫在兩個方括弧,如:內部屬性[[Prototype]]指向對象的原型。它可以通過Object.getPrototypeOf()讀取。它的值只能通過創建具有給定原型的新對象來設置,例如通過object.create()或__proto__ 。
內部屬性[[Extensible]]決定是否可以向對象添加屬性。可以通過Object.isExtensible() 方法判斷一個對象是否是可擴展的(是否可以在它上面添加新的屬性)。可以通過Object.preventExtensions()方法讓一個對象變的不可擴展,也就是永遠不能再添加新的屬性。
屬性特性(attribute),屬性的所有狀態,包括數據和元數據,都存儲在特性(attribute)中。它們是屬性具有的欄位,就像對象具有屬性一樣。特性(attribute)鍵通常用雙括弧編寫:
⑶ js 創建的對象存儲在哪
保存在內存里,通過賦值給變數的形式,這樣下次就可以通過變數名來訪問: var data = { 'name': 'Sigma' };再保存持久一點,可以保存到cookie或者localStorage里: var data = { 'name': 'Sigma' };var dataStr = JSON.stringify( data );localS.
⑷ JS中怎麼將多個對象添加到一個對象中
這個只能用集合來實現。
在JavaScript中,常用Array來存儲和操作對象:
Array:
新建:var ary = new Array(); 或 var ary = [];
增加:ary.push(value);
刪除:delete ary[n];
遍歷:for ( var i=0 ; i < ary.length ; ++i ) ary[i];
⑸ 關於用JS存取cookie時存儲一個對象變數的方法!請JS大神進來一看!
varstr="{"name":'小明',"type":'班長',"count":"2"}";
varobj=eval("("+str+")");
obj.name
obj.type
obj.count
⑹ js中函數到底怎麼存儲的
js從某種角度來說一切都是對象,對於你的問題我的解釋如下:
function Car()是保存在Car這個變數裡面的,Car的值是function(){...}。
我猜測js中的變數有兩種,一種是定長變數,一種是變長變數。前者保存簡單類型,後者是指向一個變長的內存區域。所以,對於聲明的function,其本身是簡單類型的,使用的方式為傳值,但是new之後得到的實例是對象類型的,使用的方式是傳址。
⑺ JS/Jquery 中怎麼定義存儲一個類似map中key-value形式的變數,並且怎樣動態賦值key和value
varmap={
key1:'abc',
key2:'def'
};
這樣定義即可。動態賦值如下:
map.key3='12';
如果key也是動態的,則如下處理
varkey='key4';
map[key]='34';
注意:在javascript語言中,key的值只能是字元串,不能是其它的。
⑻ js對象數組添加元素
數組有四種定義的方式
使用構造函數:
var a = new Array();
var b = new Array(10);
var c = new Array("first", "second", "third");
或者數組直接量:
var d = ["first", "second", "third"];
擴展:
function ObjStory(id,biaoti,author,type) //聲明對象
{
this.ID = id;
this.Biaoti= biaoti;
this.Author= author;
this.Type = type;
}
var arr = new Array();//聲明數組,用來存儲標題信息
var writer= new ObjStory(11,『大家去看海』,『李大膽』,『文藝類』);//聲明對象
arr[0]=writer;//向集合中添加對象
另一種方法:
var Array=[];
Array.push(new ObjStory(12,『大家去看海』,『李大膽』,『文藝類』));
Array.push(new ObjStory(14,『大家去看天』,『李小膽』,『文藝類』));
⑼ 原型原型鏈與js對象的內存地址的理解
一. js對象的內存地址的解析
註:上面的例子中Object/Function/Array的對比結果都好說,因為他們構建出來的都是新的對象,對象比較是要比較根源(數據是否是同一個)。無論是使用new還是直接調用生成一個新的對象是要開辟新的空間存儲的,不會和任何一個對象相等。
js中對象的比較:只有地址相同才相等。 其中地址指的是內存地址,即:在電腦內存中存放的位置。
如:
···
var a = new Object();
var b = new Object();
a.name = "mm";
b.name = "mm";
var c = a;
var d = a;
···
1、a == b //false
2、a == c //true
3、a == d //true
4、b == c //false
5、b == d //false
其中a == b 為false 就是因為其內存地址不同,通俗點理解就是兩個東西在堆內存的位置不同。
對於 var a = 1; 其實是建立了一個對象a,但是js並不能直接引用它的值,而其實是在引用對象a所對應的堆的地址。可以理解為:保存在變數對象中的一個地址,該地址與堆內存的實際值相關聯。
例:
詳細關於JS內存空間的描述請移步: https://blog.csdn.net/pingfan592/article/details/55189622/
二. 原型 原型鏈
懂了上面關於內存地址的介紹,將更加有利於理解原型與原型鏈
三. 使用
使用原型對象的好處是讓所有對象實例共享他的屬性和方法。
例:
參考 《高級程序設計》
問題:1、什麼是原型鏈: ECMAScript中 原型鏈的基本思想是利用原型讓一個引用類型繼承另一個引用類型的屬性和方法。基本的實現是利用構造函數,原型和實例的關系。即是每個構造函數都有一個原型對象,原型對象都包含一個指向構造函數的指針,而實例都包含一個指向原型對象的內部指針[[prototype]].由於構造函數,原型和實例存在這樣的關系,如果我們讓一個原型對象等於另一個構造函數的實例,那麼此時這個原型對象將包含一個指向另一個原型對象的指針,這樣的話,另一個原型原型中也包含著指向另一個構造函數的指針。如果另一個原型又是另一個類型的實例,那麼上面的關系還是會成立。這樣層層遞進,就夠成了實例與原型的鏈條,這就是所謂的原型鏈的基本概念。