From 8a0f97459f6987b23039e876539316319df9cedb Mon Sep 17 00:00:00 2001 From: ruanyf Date: Sat, 3 Nov 2018 20:27:43 +0800 Subject: [PATCH] docs(proxy): edit set() #765 --- docs/proxy.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/proxy.md b/docs/proxy.md index d904f14..8064e63 100644 --- a/docs/proxy.md +++ b/docs/proxy.md @@ -442,6 +442,24 @@ proxy.foo // "bar" 上面代码中,`obj.foo`属性不可写,Proxy 对这个属性的`set`代理将不会生效。 +注意,严格模式下,`set`代理如果没有返回`true`,就会报错。 + +```javascript +'use strict'; +const handler = { + set: function(obj, prop, value, receiver) { + obj[prop] = receiver; + // 无论有没有下面这一行,都会报错 + return false; + } +}; +const proxy = new Proxy({}, handler); +proxy.foo = 'bar'; +// TypeError: 'set' on proxy: trap returned falsish for property 'foo' +``` + +上面代码中,严格模式下,`set`代理返回`false`或者`undefined`,都会报错。 + ### apply() `apply`方法拦截函数的调用、`call`和`apply`操作。