blog

[vueソースコード] データ初期化プロキシ関数 実装原理

プロキシの実装としてプロキシを説明すると、実はアクセスは...

May 15, 2020 · 1 min. read
シェア

はじめに

proxy()の説明では、プロキシ関数のコンテキストを理解してください。

proxy(vm, _data, key)

var vm = new Vue({
 data : {
 message: "hello vue",
 }
})

initData() 関数は、データを繰り返し処理し、データの各属性の走査に対してプロキシ処理を実行します。

vm._data = data || {};
const keys = Object.keys(data)
 let i = keys.length
 while (i--) {
 const key = keys[i]
 if (!isReserved(key)) {
 proxy(vm, `_data`, key)
 }
 }

ソースコード

const sharedPropertyDefinition = {
 enumerable: true,
 configurable: true,
 get: noop,
 set: noop
}
export function proxy (target: Object, sourceKey: string, key: string) {
 sharedPropertyDefinition.get = function proxyGetter () {
 return this[sourceKey][key]
 }
 sharedPropertyDefinition.set = function proxySetter (val) {
 this[sourceKey][key] = val
 }
 Object.defineProperty(target, key, sharedPropertyDefinition)
}
Read next

アップルのiPhone 5s内部保証書が流出、水没は問題ではない

新しいiPhoneに不具合が生じ、アップルストアのジーニアスバーに修理に出した場合、どのような不具合が無償メンテナンスの対象で、どのような不具合が修理にお金がかかり、どのような交換が必要なのか、顧客には知る術がありません。そして今、イギリスのウェブサイトpocket-lintは、これらの謎を解決するために、AppleのiPhone 5sの内部メンテナンスドキュメントを取得します。\n\n

May 15, 2020 · 2 min read