More Related Content
20140930 anything as_code Chiba pm#1 - ArangoDB for Perl ゲットーの斜め上をゆくWebアプリケーションフレームワークの開発 (きっと)あなたにも出来る!Hyperledger composer でブロックチェーンアプリを動かしてみた What's hot (19)
ng-japan 2015 TypeScript+AngularJS 1.3 202003 functiontalkinnotesknowsworkshop20th My misstake on Ansible’s lineinfile module 202006 のの会@関数Talk 21st @function-talk-in-notesknows-workshop Elixir Meetup #1 Loggerの構造と拡張 redashのプラベートカタログ作成してつまづいたアレやコレや Capistrano紹介 at kawasaki.rb #002 #kwskrb Ruby/Rails Benchmarking and Profiling with TDD Active job meets kubernetes 20161208 Classmethod Codenize Tools Viewers also liked (6)
The Substance D - Plone Symposium Tokyo 2015 Debug it-python-hack-a-thon-2011.02 More from Yusuke Muraoka (9)
Pythonistaで始めるiOSプロトタイプ開発 Substance D world-plone-day-2017 Can A Python Go Beyond The Python プロパティディスクリプタとその拡張ライブラリ
- 5. Object.defineProperty(foo, ‘bar’, {
get: function() {
return ‘baz’;
},
set: function(v) {
console.log(v);
}
});
foo.bar
‘baz’
foo.bar = ‘qux’
qux // console.log
‘qux’
foo.bar
‘baz’
Property
Descriptor?
• オブジェクトごとの
プロパティの挙動を
記述
• value
• writable
• enumerable
• configurable
• setter/getter
- 9. BeautifulProperties.Hookable.define(
object,
‘key’,
{
beforeGet: function () { console.log(‘beforeGet’); },
afterGet: function (v) { console.log(‘afterGet’, v); },
beforeSet: function (v, p) { console.log(‘beforeSet’, v, p); },
afterSet: function (v, p) { console.log(‘afterSet’, v, p); }
}
);
object.key
beforeGet // console.log
afterGet undefined // console.log
undefined
object.key = 10
beforeSet 10 undefined // console.log
afterSet 10 undefined // console.log
10
Hookable
• getter/setterの直前
と直後にそれぞれ
フックを仕込める
• 値の変更も