欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

潛說js對(duì)象和數(shù)組

 更新時(shí)間:2011年05月25日 21:47:54   作者:  
潛說js對(duì)象和數(shù)組 對(duì)象是一個(gè)無(wú)序?qū)傩约? 每個(gè)屬性都有自己的名字和值
復(fù)制代碼 代碼如下:

/*
數(shù)組和對(duì)象 【JavaScript 權(quán)威指南 第五版】
*/

/*
對(duì)象: 是一個(gè)無(wú)序?qū)傩约? 每個(gè)屬性都有自己的名字和值 */

/* 創(chuàng)建對(duì)象簡(jiǎn)單方法, 對(duì)象直接量 */
var obj = {};
var obj = {name: 'maxthon'};
var obj = {name: {}, text: []};

/* 可使用 new 操作符 */
var a = new Array();
var d = new Date();
var r = new RegExp('javascript', 'i');
var o = new Object(); // var o = {};
/* 注: new 操作符后跟構(gòu)造函數(shù), 所以
typeof Array; // 'function'
typeof Object; // 'function'
Object 是 Function 的實(shí)例.
Function 是特殊的對(duì)象, 也是 Object 的實(shí)例.
*/

/* 對(duì)象屬性 */
// 使用 . 符合來(lái)存取屬性的值.
// 注:同時(shí)可使用 [], 里面使用屬性名(可使用變量, 這點(diǎn)特別有用).
var t = {};
t.text = 'hello';
t.o = {};
t.o.name = 'rd';
t.n = [];

var t = {
"text": "hello"
};
console.log(t.text); // 'hello';
// 補(bǔ)充: 通常使用關(guān)鍵字 var 來(lái)聲明變量, 但是聲明對(duì)象屬性時(shí), 不能使用 var 聲明


/* 對(duì)象枚舉 */

var F = function () {};
F.prototype.name = 'RD';
var obj = new F;
for (var key in obj) {
console.log(key); // name;
}

// 僅枚舉對(duì)象自身, 不沿原型鏈向上查
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(key); //
}
}
/* 注: for in 不能枚舉出預(yù)定義屬性; toString. */


/* 檢查屬性存在性 */

window.a = 'rd';
console.log(a in window); // true;

var F = function () {};
F.prototype.name = 'RD';
var obj = new F;
console.log('name' in obj); // true;


var toString = Object.prototype.toString;

// 如果對(duì)象 obj, 含有方法 getName, 則執(zhí)行它;
if (obj.getName && toString.call(obj.getName) === '[object Function]') ) {
obj.getName();
}

// 補(bǔ)充:
console.log(null == undefined); // true;
console.log(null !== undefined); // true;


/* 刪除屬性 */
delete obj.name;
// 補(bǔ)充: 使用 delete 操作符, 不能刪除使用 var 聲明的變量;


/* 作為關(guān)聯(lián)數(shù)組的對(duì)象 */

// 取對(duì)象屬性:
obj.name;
obj['name']; // 這里 name 為字符串.

// 使用 [] 表示時(shí), 屬性名是用字符串來(lái)表示的. 那么可
// 在運(yùn)行過程中進(jìn)行添加等操作
// 注:當(dāng)此屬性是做為變量傳遞時(shí), 特別有用.
// 又稱 關(guān)聯(lián)數(shù)組

/* 映射: JavaScript 對(duì)象把字符串(屬性名) 映射成值. */
for (var key in obj) {
console.log(key); // key 屬性名, 此處 做為值存在.
}



/*
通用的 Object 屬性和方法

JavaScript 中所有對(duì)象都繼承自 Object 類;

1, constructor 屬性.
指向其構(gòu)造函數(shù).
*/
var F = function () {};
var f = new F;
console.log(f.constructor == F); // true

// 構(gòu)造函數(shù)的原型存在屬性 constructor 指向自己;
F.prototype.constructor == F;

// 補(bǔ)充:
var F = function () {};
var G = function () {};
G.prototype = new F;

var g = new G;
console.log(g.constructor == F); // true;
console.log(g.constructor == G); // false;
// 可使用 g instanceof F;


/*
2, toString() 方法
*/
{'name': 'maxthon'}.toString(); // '[object Object]'

/* 數(shù)組使用 toString 方法, 把會(huì)元素組成字符串, 其它對(duì)象會(huì)轉(zhuǎn)化為 [object Object];
函數(shù)使用原始 toString 方法, 會(huì)得到函數(shù)源碼 */
['a', 'b', 1, false, ['e','f'], {}].toString();
// "a,b,1,false,e,f,[object Object]"

function t() {
console.log('test');
}
t.toString();
// 源碼

/*
3, toLocalString();
返回對(duì)象的一個(gè)本地化字符串
4, valueOf();
在轉(zhuǎn)化為基本類型時(shí), 會(huì)使用到. valueOf/toString.
5, hasOwnProperty();
6, propertyIsEnumberable();
是否可枚舉出來(lái);
7, isPrototyeOf();
a.isPrototyeOf(b);
如果 a 是 b 的原型, 則返回 true;
*/
var o = {}; // new Object;
Object.prototype.isPrototyeOf(o); // true;
Object.isPrototyeOf(o); // false;
o.isPrototyeOf(Object.prototype); // false;
Function.prototype.isPrototyeOf(Object); // true;

/* 【閉包是存在函數(shù)實(shí)例, 垃圾沒有回收是存在賦值引用】 */



/*
數(shù)組: 有序的、值的集合;

每個(gè)值, 也叫元素, 對(duì)應(yīng)一個(gè)下標(biāo);
下標(biāo)是從 0 開始;
數(shù)組中值, 可以為任何類型. 數(shù)組, 對(duì)象, null, undefined.
*/

// 創(chuàng)建.
var arr = [];
var arr = new Array();

var t = '';
var arr = [1,2,3, null, undefined, [], {}, t];

/* 使用 new 操作符創(chuàng)建數(shù)組的3種情況: */
var arr = new Array(); // [], 和直接量相同

var arr = new Array(5); // 長(zhǎng)度為 5; []直接量是無(wú)法做到的.
console.log(arr); // []; JavaScript 引擎會(huì)無(wú)視 undefined;

var arr = new Array('5'); // 值為 ['5'];
var arr = new Array('test'); // 值為 ['test'];

/* 相關(guān)實(shí)例 */
var s = [1, 2, 3];
s[5] = 'a';
console.log(s);
[1, 2, 3, undefined, undefined, 'a']



/* 數(shù)組的讀和寫 */

value = array[0];
a[1] = 3.14;
i = 2;
a[i] = 3;
a[a[i]] = a[0];

// 數(shù)組 -> 對(duì)象 -> 屬性
array.test = 'rd';

// 數(shù)組下標(biāo)大于等于 0, 并且小于 2的32次方 減 1 的整數(shù).
// 其它值, JavaScript 會(huì)轉(zhuǎn)化成字符串, 做為對(duì)象屬性的名字, 不再是下標(biāo).


var array = [];
array[9] = 10; // array 長(zhǎng)度會(huì)變成 10;
// 注: JavaScript 解釋器只給數(shù)組下標(biāo)為 9 的元素分配內(nèi)存, 其它下標(biāo)無(wú).

var array = [];
array.length = 10; // 添加 array 的長(zhǎng)度;
array[array.length] = 4;


/* 刪除數(shù)組元素 */
// delete 運(yùn)算符把一個(gè)數(shù)組元素設(shè)置為 undefined 值, 但是元素本身還是存在的.
// 真正刪除, 可以使用: Array.shift();【刪除第一個(gè)】 Array.pop();【刪除最后一個(gè)】 Array.splice();【從一個(gè)數(shù)組中刪除一個(gè)連續(xù)范圍】 或修正 Array.length 長(zhǎng)度;

/* 相關(guān)實(shí)例 */
var a = [1, 2, 3];
delete a[1];
console.log(a); // [1, undefined, 3];

/* 補(bǔ)充: JavaScript 權(quán)威指南 第五版 59頁(yè)
由 var 聲明的變量是永久性的, 也就是說, 用 delete 運(yùn)算符來(lái)刪除這些變量將會(huì)引發(fā)錯(cuò)誤.
但: 在開發(fā)者工具里面, 是可以刪除的. 而在網(wǎng)頁(yè)中, 正如書上所寫.
*/


/* 數(shù)組長(zhǎng)度 */
[].length;


/* 遍歷數(shù)組 */
var array = [1, 2, 3, 4, 5];
for (var i = 0, l = array.length; i < l; i++) {
console.log(array[i]);
}

array.forEach(function (item, index, arr) {
console.log(item);
});

/* 截取或增長(zhǎng)數(shù)組: 修正 length 長(zhǎng)度, 前面已提過 */

/* 多維數(shù)組 */
[[1], [2]]

/* 數(shù)組方法 */
// join
var array = [1, 2, 3, 4, 5];
var str = array.join(); // 1,2,3,4,5
var str = array.join('-'); // 1-2-3-4-5
// 注: 此方法與 String.split() 方法相反;

// reverse();
var array = [1, 2, 3, 4, 5];
array.reverse(); // [5, 4, 3, 2, 1]
// 注:修改原數(shù)組;

// sort();
var array = [1, 3, 2, 4, 5, 3];
array.sort();// [1, 2, 3, 3, 4, 5];
/* 注: 數(shù)組中存在未定義元素, 把這些元素放到最后 */

/* 同時(shí)可自定義排序, sort(func);
func 接收兩個(gè)參數(shù), 如果第一個(gè)參數(shù)應(yīng)該位于第二個(gè)參數(shù)之前, 那么比較函數(shù)將返回一個(gè)小于0的數(shù), 相反, 返回大于0的數(shù). 相等, 返回0;
*/
array.sort(function (a, b) {
return b - a;
});

// 實(shí)例: 按奇數(shù)到偶數(shù), 并且從小到大排序
[1, 2, 3, 4, 5, 6, 7, 2, 4, 5, 1].sort(function (a, b) {
if (a % 2 && b % 2) {
return a - b;
}

if (a % 2) {
return -1;
}

if (b % 2) {
return 1;
}

return a - b;

});


// concat() 方法. 合并數(shù)組, 但不深度合并
var a = [1, 2, 3];
a.concat(4, 5); // [1, 2, 3, 4, 5]
a.concat([4, 5]); // [1, 2, 3, 4, 5]
a.concat([4, 5], [8, 9]); // [1, 2, 3, 4, 5, 8, 9]
a.concat([4, 5], [6, [10, 19]]); // [1, 2, 3, 4, 5, 6, [10, 19] ]


// slice() 方法. 源數(shù)組不改變.
var a = [1, 2, 3, 4, 5];
a.slice(0, 3); // [1, 2, 3]
a.slice(3); // [4, 5];
a.slice(1, -1); // [2, 3, 4]
a.slice(1, -1 + 5)
a.slice(1, 4);
a.slice(-3, -2); // [3]
a.slice(-3 + 5, -2 + 5);
a.slice(2, 3);
/* 注:
不包括第二個(gè)參數(shù)指定的元素.
負(fù)值轉(zhuǎn)化為: 負(fù)值 + 數(shù)組長(zhǎng)度
*/

// splice(pos[, len[, a, b]]) 方法. 刪除指定位置開始后, 指定長(zhǎng)度元素, 再綴加元素;
// 返回刪除元素組成的數(shù)組. 原數(shù)組改變.
var a = [1, 2, 3, 4, 5, 6, 7, 8];
a.splice(4); // [5, 6, 7, 8]; 此時(shí) a: [1, 2, 3, 4]
a.splice(1, 2); // [2, 3]; 此時(shí) a: [1, 4];
a.splice(1, 1); // [4]; 此時(shí) a: [1];

var a = [1, 2, 3, 4, 5];
a.splice(2, 0, 'a', 'b'); // [1, 2, 'a', 'b', 3, 4, 5]
a.splice(2, 2, [1, 2], 3); // ['a', 'b']; 此時(shí) a: [1, 2, [1, 2], 3, 3, 4, 5]
/* 注:
第二個(gè)參數(shù)后的參數(shù), 直接插入到處理數(shù)組中。
第一個(gè)參數(shù)可為負(fù)數(shù).
*/


// push() 方法和pop() 方法.
// push() 可以將一個(gè)或多個(gè)新元素附加到數(shù)組的尾部, 然后返回?cái)?shù)組新長(zhǎng)度;
// pop() 刪除數(shù)組中的最后一個(gè)元素, 減少數(shù)組的長(zhǎng)度, 返回它刪除的值.
// 注:兩個(gè)方法都在原數(shù)組上修改, 而非生成一個(gè)修改過的數(shù)組副本.

var stack = [];
stack.push(1, 2); // stack: [1, 2]; return 2;
stack.pop(); // stack: [1]; return 2; 刪除的元素值
stack.push(3); // stack: [1, 3]; return 2;
stack.pop(); // stack: [1]; return 3; 刪除的元素值
stack.push([4, 5]); // stack: [1, [4, 5]]returm 2;
stack.pop(); // stack: [1]; return [4, 5]; 刪除的元素值

// unshift() 方法和 shift() 方法. 同上, 從數(shù)組頭開始.


// toString() 方法和 toLocalString()
[1, 2, 4].toString(); // 1,2,3;
['a', 'b', 'c'].toString(); // 'a,b,c';
// 和無(wú)參數(shù)的 join 方法相同.


/* jsapi 新添方法:map, every, some, filter, forEach, indexOf, lastIndexOf, isArray */


/* 類似數(shù)組的對(duì)象 */

arguments
document.getElementsByTagName();

相關(guān)文章

  • JS解決position:sticky的兼容性問題的方法

    JS解決position:sticky的兼容性問題的方法

    本篇文章主要介紹了JS解決position:sticky的兼容性問題的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • javascript獲取div的內(nèi)容 精華篇

    javascript獲取div的內(nèi)容 精華篇

    用js獲取div的內(nèi)容的方法,其實(shí)原理就是利用innerText或innerHTML
    2009-05-05
  • BootStrap table刪除指定行的注意事項(xiàng)(筆記整理)

    BootStrap table刪除指定行的注意事項(xiàng)(筆記整理)

    在前端開發(fā)中遇到這樣的問題,對(duì)于table指定行的數(shù)據(jù)進(jìn)行刪除,花了好長(zhǎng)時(shí)間才解決,今天小編抽時(shí)間給大家介紹BootStrap table刪除指定行的注意事項(xiàng),需要的朋友參考下吧
    2017-02-02
  • 用js寫的一個(gè)路由(簡(jiǎn)單實(shí)例)

    用js寫的一個(gè)路由(簡(jiǎn)單實(shí)例)

    下面小編就為大家?guī)?lái)一篇用js寫的一個(gè)路由(簡(jiǎn)單實(shí)例)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧
    2016-09-09
  • JavaScript中常見的Polyfill介紹

    JavaScript中常見的Polyfill介紹

    在多姿多彩的JavaScript世界,Polyfill如同一座架在瀏覽器兼容性鴻溝之上的橋梁,本文將介紹常見的JavaScript Polyfill兼容方案,并舉例說明它們的應(yīng)用,需要的可以參考下
    2023-12-12
  • JS 實(shí)現(xiàn)banner圖片輪播效果(鼠標(biāo)事件)

    JS 實(shí)現(xiàn)banner圖片輪播效果(鼠標(biāo)事件)

    js實(shí)現(xiàn)banner圖片輪播效果,通過鼠標(biāo)點(diǎn)擊左右可切換圖片,具體實(shí)現(xiàn)代碼大家參考下本文
    2017-08-08
  • JSON字符串轉(zhuǎn)JSON對(duì)象

    JSON字符串轉(zhuǎn)JSON對(duì)象

    本文給大家分享的是如何使用javascript實(shí)現(xiàn)JSON字符串轉(zhuǎn)JSON對(duì)象的方法,這里記錄下來(lái),有需要的小伙伴可以參考下。
    2015-07-07
  • JavaScript中常見陷阱小結(jié)

    JavaScript中常見陷阱小結(jié)

    JavaScript中常見陷阱,都是一些實(shí)際應(yīng)用中,需要注意的地方,需要的朋友可以參考下。
    2010-04-04
  • JS中對(duì)Cookie的操作詳解

    JS中對(duì)Cookie的操作詳解

    這篇文章主要為大家詳細(xì)介紹了JS中對(duì)Cookie的具體操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JS中FRAME的操作問題實(shí)例分析

    JS中FRAME的操作問題實(shí)例分析

    這篇文章主要介紹了JS中FRAME的操作問題實(shí)例分析,詳細(xì)講述了js針對(duì)frame框架操作中的各種訪問問題,需要的朋友可以參考下
    2014-10-10

最新評(píng)論