Skip to content

Commit a2b7a4f

Browse files
committed
cache object.defineProperty
1 parent ca2137d commit a2b7a4f

File tree

3 files changed

+9
-6
lines changed

3 files changed

+9
-6
lines changed

src/compiler.js

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var Emitter = require('./emitter'),
1414
makeHash = utils.hash,
1515
extend = utils.extend,
1616
hasOwn = ({}).hasOwnProperty,
17+
def = Object.defineProperty,
1718

1819
// hooks to register
1920
hooks = [
@@ -321,7 +322,7 @@ CompilerProto.observeData = function (data) {
321322
$dataBinding.update(data)
322323

323324
// allow $data to be swapped
324-
Object.defineProperty(compiler.vm, '$data', {
325+
def(compiler.vm, '$data', {
325326
get: function () {
326327
compiler.observer.emit('get', '$data')
327328
return compiler.data
@@ -645,7 +646,7 @@ CompilerProto.defineProp = function (key, binding) {
645646

646647
binding.value = data[key]
647648

648-
Object.defineProperty(compiler.vm, key, {
649+
def(compiler.vm, key, {
649650
get: function () {
650651
return compiler.data[key]
651652
},
@@ -664,7 +665,7 @@ CompilerProto.defineMeta = function (key, binding) {
664665
var ob = this.observer
665666
binding.value = this.data[key]
666667
delete this.data[key]
667-
Object.defineProperty(this.vm, key, {
668+
def(this.vm, key, {
668669
get: function () {
669670
if (Observer.shouldGet) ob.emit('get', key)
670671
return binding.value
@@ -696,7 +697,7 @@ CompilerProto.defineExp = function (key, binding, directive) {
696697
*/
697698
CompilerProto.defineComputed = function (key, binding, value) {
698699
this.markComputed(binding, value)
699-
Object.defineProperty(this.vm, key, {
700+
def(this.vm, key, {
700701
get: binding.value.$get,
701702
set: binding.value.$set
702703
})

src/observer.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ var Emitter = require('./emitter'),
66
typeOf = utils.typeOf,
77
def = utils.defProtected,
88
hasOwn = ({}).hasOwnProperty,
9+
oDef = Object.defineProperty,
910
slice = [].slice,
1011
// types
1112
OBJECT = 'Object',
@@ -254,7 +255,7 @@ function convertKey (obj, key) {
254255

255256
init(obj[key])
256257

257-
Object.defineProperty(obj, key, {
258+
oDef(obj, key, {
258259
get: function () {
259260
var value = values[key]
260261
// only emit get on tip values

src/utils.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var config = require('./config'),
33
win = window,
44
console = win.console,
55
timeout = win.setTimeout,
6+
def = Object.defineProperty,
67
THIS_RE = /[^\w]this[^\w]/,
78
hasClassList = 'classList' in document.documentElement,
89
ViewModel // late def
@@ -80,7 +81,7 @@ var utils = module.exports = {
8081
* or for...in loops.
8182
*/
8283
defProtected: function (obj, key, val, enumerable, writable) {
83-
Object.defineProperty(obj, key, {
84+
def(obj, key, {
8485
value : val,
8586
enumerable : enumerable,
8687
writable : writable,

0 commit comments

Comments
 (0)