ホームページ  >  記事  >  ウェブフロントエンド  >  プロトタイプ ハッシュ オブジェクト learning_prototype

プロトタイプ ハッシュ オブジェクト learning_prototype

WBOY
WBOYオリジナル
2016-05-16 18:49:431269ブラウズ
コードをコピー コードは次のとおりです:

//ハッシュ オブジェクトのユーティリティ関数
function $ H(object ) {
return new Hash(object)
};

var Hash = Class.create(function() {

//初期化,新しいハッシュ オブジェクトを作成します
関数Initialize(object) {
this._object = Object.isHash(object) ? object.toObject() : Object.clone(object); >/ /Enumerable のメソッドをオーバーライドします。
function _each(iterator) {
for (var key in this._object) {
var value = this._object[key]、トラバース時にペアが使用されますハッシュオブジェクト = [キー, 値];
ペア.値 = 値;
}
}

関数set( key, value) {
return this._object[key] = value;

function get(key) {
if (this._object[key] !==オブジェクト.prototype[key])
return this._object[key];

function unset(key) {
var value = this._object[key];この ._object[key] を削除します;
戻り値;

関数 toObject() {
return Object.clone(this._object);

関数キー() {
return this.pluck('key');

関数の値() {
return this.pluck('value'); >}

//値のキーを返します
functionindex(value) {
var match = this.detect(function(pair) {
return par.value === value ;
});
return match && match.key

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

//元のハッシュ オブジェクトを更新し、オブジェクト パラメーターのキーと値のペアを元のハッシュ オブジェクトに更新します。
function update(object) {
return new Hash(object). inject(this, 関数 (結果, ペア) {
結果.set(ペア.キー, ペア.値);
結果を返す;
}); toQueryPair(key, value ) {
if (Object.isUnknown(value)) return key;
return key '=' encodeURIComponent(String.interpret(value));

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

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

function Inspection() {
return '#return par.map(Object.inspect).join(': ');
}).join( ', ') '}>';
}

関数 toJSON() {
return Object.toJSON(this.toObject());

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

return {
initialize: 初期化,
_each: _each,
set: set,
get: 取得、
unset: unset 、
toObject: toObject、
toTemplateReplacements: toObject、
keys: キー、
values: 値、
index: インデックス、
merge: マージ、
update: 更新、
toQueryString: toQueryString、
inspect: 検査、
toJSON: toJSON、
clone: クローン
}); ());

Hash.from = $H;


クローン
それぞれ
取得
検査
キー
マージ
Remove
set
toJSON
toObject
toQueryString
unset
update
value
メソッドの例をいくつか挙げます。単純なメソッドはスキップします

toQueryString( ):




コードをコピー


コードは次のとおりです:


$H({アクション: 'ship'、order_id: 123、料金: ['f1', 'f2']、'label': 'デモ' }).toQueryString()
// -> 'action=ship&order_id=123&fees; =f1&fees=f2&label=a デモ'

// 空のハッシュは空のクエリ文字列です:
$H().toQueryString()
// ''



update():
コードをコピー コードは次のとおりです:
var h = $H({ 名前: 'プロトタイプ'、バージョン: 1.5 });
h.update({ バージョン: 1.6、作者: 'サム' }).inspect(); 🎜>// -> #<ハッシュ:{'名前': 'プロトタイプ', '作成者': 'サム'}>

h.inspect(); 🎜>// -> #

// これは変更されることに注意してください元のハッシュ オブジェクト


merge():
コードをコピーコードは次のとおりです:

var h = $H({ 名前: 'プロトタイプ'、バージョン: 1.5 });
h.merge({ バージョン: 1.6、作成者: 'サム' }).inspect(); 🎜>// -> #<ハッシュ:{'名前': 'プロトタイプ', '作成者': 'サム'}>

h.inspect(); 🎜>// -> #

// ここでは元の Hash オブジェクトは変更されないことに注意してください。
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。