针对于readonly这个装饰器的代码,自己写的readonly确实生效了,可以看到虽然后面针对于p.name进行了赋值,但是还是返回的是原来的值。
奇怪的是并没有在控制台打印出报错信息。使用第三方core-decorators的话则和课程一样。是代码的问题还是说和浏览器有一定的关系。
class Person{
//装饰方法
@readonly
name() {return '111'}
}
function readonly(target, name, descriptor) {
descriptor.writable = false;
return descriptor
}
var p = new Person()
p.name = function () {
return '222'
}
alert(p.name());