You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@weex.apache.org by so...@apache.org on 2017/03/24 10:06:12 UTC
[02/13] incubator-weex git commit: * [jsfm] fix freeze error when
assign name to Error && fix setInterval bug
* [jsfm] fix freeze error when assign name to Error && fix setInterval bug
Project: http://git-wip-us.apache.org/repos/asf/incubator-weex/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-weex/commit/51073431
Tree: http://git-wip-us.apache.org/repos/asf/incubator-weex/tree/51073431
Diff: http://git-wip-us.apache.org/repos/asf/incubator-weex/diff/51073431
Branch: refs/heads/0.12-dev
Commit: 510734311657d1af84d217cad99833b5a52a68f3
Parents: dded7ab
Author: fkysly <fk...@gmail.com>
Authored: Wed Mar 22 17:44:17 2017 +0800
Committer: fkysly <fk...@gmail.com>
Committed: Wed Mar 22 17:44:17 2017 +0800
----------------------------------------------------------------------
html5/frameworks/legacy/app/ctrl/init.js | 2 ++
html5/shared/freeze.js | 47 +++++++++++++++++----------
2 files changed, 31 insertions(+), 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/51073431/html5/frameworks/legacy/app/ctrl/init.js
----------------------------------------------------------------------
diff --git a/html5/frameworks/legacy/app/ctrl/init.js b/html5/frameworks/legacy/app/ctrl/init.js
index 0e5d0be..5048d68 100644
--- a/html5/frameworks/legacy/app/ctrl/init.js
+++ b/html5/frameworks/legacy/app/ctrl/init.js
@@ -88,12 +88,14 @@ export function init (app, code, data, services) {
args[0](...args.slice(2))
}
timer.setTimeout(handler, args[1])
+ return app.doc.taskCenter.callbackManager.lastCallbackId.toString()
},
setInterval: (...args) => {
const handler = function () {
args[0](...args.slice(2))
}
timer.setInterval(handler, args[1])
+ return app.doc.taskCenter.callbackManager.lastCallbackId.toString()
},
clearTimeout: (n) => {
timer.clearTimeout(n)
http://git-wip-us.apache.org/repos/asf/incubator-weex/blob/51073431/html5/shared/freeze.js
----------------------------------------------------------------------
diff --git a/html5/shared/freeze.js b/html5/shared/freeze.js
index 6f54881..8edd78c 100644
--- a/html5/shared/freeze.js
+++ b/html5/shared/freeze.js
@@ -7,35 +7,46 @@ export function freezePrototype () {
Object.freeze(Array)
// Object.freeze(Object.prototype)
- freezeObjProto()
+ freezeObjectProto()
Object.freeze(Array.prototype)
Object.freeze(String.prototype)
Object.freeze(Number.prototype)
Object.freeze(Boolean.prototype)
- Object.freeze(Error.prototype)
+ // Object.freeze(Error.prototype)
+ freezeErrorProto()
Object.freeze(Date.prototype)
Object.freeze(RegExp.prototype)
}
-function freezeObjProto () {
- freezeObjProtoProperty('__defineGetter__')
- freezeObjProtoProperty('__defineSetter__')
- freezeObjProtoProperty('__lookupGetter__')
- freezeObjProtoProperty('__lookupSetter__')
- freezeObjProtoProperty('constructor')
- freezeObjProtoProperty('hasOwnProperty')
- freezeObjProtoProperty('isPrototypeOf')
- freezeObjProtoProperty('propertyIsEnumerable')
- freezeObjProtoProperty('toLocaleString')
- freezeObjProtoProperty('toString')
- freezeObjProtoProperty('valueOf')
- Object.seal(Object.prototype)
+function freezeObjectProto () {
+ const proto = Object.prototype
+ const protoName = 'Object.prototype'
+ freezeProtoProperty(proto, '__defineGetter__', protoName)
+ freezeProtoProperty(proto, '__defineSetter__', protoName)
+ freezeProtoProperty(proto, '__lookupGetter__', protoName)
+ freezeProtoProperty(proto, '__lookupSetter__', protoName)
+ freezeProtoProperty(proto, 'constructor', protoName)
+ freezeProtoProperty(proto, 'hasOwnProperty', protoName)
+ freezeProtoProperty(proto, 'isPrototypeOf', protoName)
+ freezeProtoProperty(proto, 'propertyIsEnumerable', protoName)
+ freezeProtoProperty(proto, 'toLocaleString', protoName)
+ freezeProtoProperty(proto, 'toString', protoName)
+ freezeProtoProperty(proto, 'valueOf', protoName)
+ Object.seal(proto)
}
-function freezeObjProtoProperty (propertyName) {
- const proto = Object.prototype
+function freezeErrorProto () {
+ const proto = Error.prototype
+ const protoName = 'Error.prototype'
+ freezeProtoProperty(proto, 'name', protoName)
+ freezeProtoProperty(proto, 'message', protoName)
+ freezeProtoProperty(proto, 'toString', protoName)
+ freezeProtoProperty(proto, 'constructor', protoName)
+ Object.seal(proto)
+}
+function freezeProtoProperty (proto, propertyName, protoName) {
if (!proto.hasOwnProperty(propertyName)) {
return
}
@@ -47,7 +58,7 @@ function freezeObjProtoProperty (propertyName) {
},
set: function (value) {
if (this === proto) {
- throw Error(`Cannot assign to read only property ${propertyName} of Object.prototype`)
+ throw Error(`Cannot assign to read only property ${propertyName} of ${protoName}`)
}
Object.defineProperty(this, propertyName, {