Skip to content

Commit 8e8fb83

Browse files
authored
Merge pull request #798 from BUPTlhuanyu/fix-proxy-set
fix: strict模式下this.d设置属性值的时候报错
2 parents f9fd093 + ea39f88 commit 8e8fb83

5 files changed

Lines changed: 1317 additions & 4 deletions

File tree

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
ChangeLog
33
========
44

5+
3.15.4
6+
-------
7+
8+
+ 【bug修复】- 修复严格模式下 proxy set 无返回导致 js 引擎抛错误的问题
9+
510
3.15.3 (2025-8-31)
611
-------
712

src/runtime/data-proxy.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ function dataProxy(data) {
5151
paths: paths.concat({type: ExprType.STRING, value: prop})
5252
};
5353
data.set(expr, value);
54+
return true;
5455
},
5556

5657
get: target instanceof Array

src/util/proxy-empty-set.js

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
/**
2+
* Copyright (c) Baidu Inc. All rights reserved.
3+
*
4+
* This source code is licensed under the MIT license.
5+
* See LICENSE file in the project root for license information.
6+
*
7+
* @file 空函数
8+
*/
9+
10+
11+
/**
12+
* 啥都不干,返回true
13+
*/
14+
function emptyReturnTruth() {return true;}
15+
16+
exports = module.exports = emptyReturnTruth;

src/view/component.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010

1111
var each = require('../util/each');
12-
var empty = require('../util/empty');
1312
var guid = require('../util/guid');
1413
var extend = require('../util/extend');
1514
var nextTick = require('../util/next-tick');
@@ -51,6 +50,7 @@ var createDataTypesChecker = require('../util/create-data-types-checker');
5150
var warn = require('../util/warn');
5251
var handleError = require('../util/handle-error');
5352
var DOMChildrenWalker = require('./dom-children-walker');
53+
var emptyReturnTruth = require('../util/proxy-empty-set');
5454

5555

5656
var proxySupported = typeof Proxy !== 'undefined';
@@ -526,8 +526,8 @@ var componentComputedProxyHandler = {
526526
return new Proxy(value, componentComputedProxyHandler);
527527
}
528528
return value;
529-
},
530-
set: empty
529+
},
530+
set: emptyReturnTruth
531531
};
532532

533533

@@ -578,7 +578,7 @@ Component.prototype._calcComputed = function (computedExpr) {
578578

579579
if (proxySupported) {
580580
that.d = new Proxy(me.data.raw, {
581-
set: empty,
581+
set: emptyReturnTruth,
582582
get: function (obj, prop) {
583583
if (!computedDeps[prop]) {
584584
computedDeps[prop] = 1;

0 commit comments

Comments
 (0)