var Hash = Class.create(Enumerable, (function() {

//初始化,創(chuàng)建一個(gè)新的Hash對象 function initialize(object) " /> 免费果冻传媒在线完整观看,人妖和美女玩,久久在精品线影院精品国产

天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

Prototype Hash對象 學(xué)習(xí)

復(fù)制代碼 代碼如下:
//Hash對象的工具函數(shù)
function $H(object) {
return new Hash(object);
};

var Hash = Class.create(Enumerable, (function() {

//初始化,創(chuàng)建一個(gè)新的Hash對象
function initialize(object) {
this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
}

//覆蓋Enumerable里面的方法,遍歷Hash對象時(shí)會(huì)用到
function _each(iterator) {
for (var key in this._object) {
var value = this._object[key], pair = [key, value];
pair.key = key;
pair.value = value;
iterator(pair);
}
}

function set(key, value) {
return this._object[key] = value;
}

function get(key) {
if (this._object[key] !== Object.prototype[key])
return this._object[key];
}

function unset(key) {
var value = this._object[key];
delete this._object[key];
return value;
}

function toObject() {
return Object.clone(this._object);
}

function keys() {
return this.pluck('key');
}

function values() {
return this.pluck('value');
}

//返回value的key
function index(value) {
var match = this.detect(function(pair) {
return pair.value === value;
});
return match && match.key;
}

function merge(object) {
return this.clone().update(object);
}

//更新原有Hash對象,把object參數(shù)內(nèi)的鍵值對更新到原Hash對象
function update(object) {
return new Hash(object).inject(this, function(result, pair) {
result.set(pair.key, pair.value);
return result;
});
}

function toQueryPair(key, value) {
if (Object.isUndefined(value)) return key;
return key + '=' + encodeURIComponent(String.interpret(value));
}

function toQueryString() {
return this.inject([], function(results, pair) {
var key = encodeURIComponent(pair.key), values = pair.value;

if (values && typeof values == 'object') {
if (Object.isArray(values))
return results.concat(values.map(toQueryPair.curry(key)));
} else results.push(toQueryPair(key, values));
return results;
}).join('&');
}

function inspect() {
return '#<Hash:{' + this.map(function(pair) {
return pair.map(Object.inspect).join(': ');
}).join(', ') + '}>';
}

function toJSON() {
return Object.toJSON(this.toObject());
}

function clone() {
return new Hash(this);
}

return {
initialize: initialize,
_each: _each,
set: set,
get: get,
unset: unset,
toObject: toObject,
toTemplateReplacements: toObject,
keys: keys,
values: values,
index: index,
merge: merge,
update: update,
toQueryString: toQueryString,
inspect: inspect,
toJSON: toJSON,
clone: clone
};
})());

Hash.from = $H;

clone
each
get
inspect
keys
merge
remove
set
toJSON
toObject
toQueryString
unset
update
value
給出一些方法的示例,簡單的方法就略過了
toQueryString():
復(fù)制代碼 代碼如下:
$H({ action: 'ship', order_id: 123, fees: ['f1', 'f2'], 'label': 'a demo' }).toQueryString()
// -> 'action=ship&order_id=123&fees=f1&fees=f2&label=a%20demo'

// an empty hash is an empty query string:
$H().toQueryString()
// -> ''

update():
復(fù)制代碼 代碼如下:
var h = $H({ name: 'Prototype', version: 1.5 });
h.update({ version: 1.6, author: 'Sam' }).inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.6, 'author': 'Sam'}>

h.inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.6, 'author': 'Sam'}>

//注意這里會(huì)改變原來的Hash對象

merge():
復(fù)制代碼 代碼如下:
var h = $H({ name: 'Prototype', version: 1.5 });
h.merge({ version: 1.6, author: 'Sam' }).inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.6, 'author': 'Sam'}>

h.inspect();
// -> #<Hash:{'name': 'Prototype', 'version': 1.5}>

//注意這里不改變原有Hash對象

JavaScript技術(shù)Prototype Hash對象 學(xué)習(xí),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 国产爱豆果冻传媒在线观看 | 快播金瓶梅 | 97超碰97资源在线观看视频 | av色天堂2018在线观看 | 国产精品99久久久久久宅男AV | 一本道久久综合久久88 | 97视频在线播放 | 久久青草费线频观看国产 | 郭德纲于谦2012最新相声 | 六六影院午夜伦理 | 欧美午夜福利主线路 | 777黄色片| 国产精品手机在线视频 | 秋霞电影网午夜一级鲁丝片 | 狂躁美女BBBBBB视频 | 亚洲精品免费在线视频 | 日韩精品 电影一区 亚洲高清 | 多人乱肉高hnp| 精品国产人成亚洲区 | 无码任你躁久久久久久久 | 国产精品色无码AV在线观看 | 男人桶爽女人 | 欧美日韩亚洲成人 | 国产精品久久久久AV麻豆 | 久久精品免视看国产 | 男女肉大捧进出全过程免费 | 亚洲精品欧美精品中文字幕 | 亚洲在线成色综合网站 | 97视频免费在线 | 黄色网址在线免费观看 | 91精品国产高清久久久久久 | 久久精品人人做人人爽97 | 久久香蕉国产线看观看精品 | 爆乳啪啪无码成人二区亚洲欧美 | 久久综合狠狠综合狠狠 | 日韩AV无码一区二区三区不卡毛片 | 风月宝鉴之淫乱英雄传 电影 | 亚洲国产精品第一影院在线观看 | 波多久久亚洲精品AV无码 | 天美传媒 免费观看 | 国产香蕉视频在线观看 |