Skip to content

Commit 4f10c51

Browse files
re-fortkazupon
authored andcommitted
Update Instance in Guide to mention Object.freeze (vuejs#573)
* Update Instance in Guide to mention Object.freeze * Update date
1 parent 6546961 commit 4f10c51

File tree

1 file changed

+34
-7
lines changed

1 file changed

+34
-7
lines changed

src/v2/guide/instance.md

Lines changed: 34 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
title: Vue インスタンス
3-
updated: 2017-12-03
3+
updated: 2017-12-28
44
type: guide
55
order: 3
66
---
@@ -9,7 +9,7 @@ order: 3
99

1010
全ての Vue アプリケーション は、`Vue` 関数で新しい **Vue インスタンス**を作成することによって起動されます。
1111

12-
``` js
12+
```js
1313
var vm = new Vue({
1414
// オプション
1515
})
@@ -38,7 +38,7 @@ Vue アプリケーションは、 `new Vue` で作成された**ルート Vue
3838

3939
Vue インスタンスが作成されると、自身の `data` オブジェクトの全てのプロパティを**リアクティブシステム**に追加します。これらのプロパティの値を変更すると、ビューが"反応"し、新しい値に一致するように更新します。
4040

41-
``` js
41+
```js
4242
// データオブジェクト
4343
var data = { a: 1 }
4444

@@ -61,13 +61,13 @@ vm.a // => 3
6161

6262
このデータを変更すると、ビューが再レンダリングされます。`data`のプロパティは、インスタンスが作成されたときに存在していた場合にのみ**リアクティブ**です。 つまり、以下のように新しいプロパティを追加する場合、
6363

64-
``` js
64+
```js
6565
vm.b = 'hi'
6666
```
6767

6868
その後、 `b` への変更はビューの更新を引き起こさないでしょう。 後でプロパティが必要になることがわかっているならば、空でも存在しない場合でも初期値を設定するだけで済みます。 例:
6969

70-
``` js
70+
```js
7171
data: {
7272
newTodoText: '',
7373
visitCount: 0,
@@ -77,9 +77,36 @@ data: {
7777
}
7878
```
7979

80+
これに対する唯一の例外は、既存のプロパティの変更を防ぐ `Object.freeze()`の使用です。これはリアクティブシステムが変更を_追跡_することができないことも意味します。
81+
82+
```js
83+
var obj = {
84+
foo: 'bar'
85+
}
86+
87+
Object.freeze(obj)
88+
89+
new Vue({
90+
el: '#app',
91+
data () {
92+
return {
93+
obj
94+
}
95+
}
96+
})
97+
```
98+
99+
```html
100+
<div id="app">
101+
<p>{{ obj.foo }}</p>
102+
<!-- これは obj.foo を更新しなくなります! -->
103+
<button @click="obj.foo = 'baz'">Change it</button>
104+
</div>
105+
```
106+
80107
data プロパティに加えて、Vue インスタンスは、いくつかの便利なプロパティとメソッドを持っています。これらはユーザ定義のプロパティと区別するために、頭に `$` が付けられています。 例:
81108

82-
``` js
109+
```js
83110
var data = { a: 1 }
84111
var vm = new Vue({
85112
el: '#example',
@@ -103,7 +130,7 @@ vm.$watch('a', function (newValue, oldValue) {
103130

104131
例えば、[`created`](../api/#created) フックはインスタンスが生成された後にコードを実行したいときに使われます。
105132

106-
``` js
133+
```js
107134
new Vue({
108135
data: {
109136
a: 1

0 commit comments

Comments
 (0)