草庐IT

Getter-Setter

全部标签

javascript - Vue.js : "TypeError: Cannot set property props of#<Object> which has only a getter"

我正在尝试实例化一个Vue组件,但出现错误:[Vuewarn]:Errorinrender:"TypeError:Cannotsetpropertypropsof#whichhasonlyagetter"(foundin)我也在使用库vuedraggable但我认为这个问题更多的是Vue问题而不是vuedraggable问题。下面是我的代码。这里是draggable-list.vue可拖动列表.jsconstdraggable=require("vuedraggable");module.exports={name:"draggable-list",components:{dragga

javascript - 在 JavaScript 中,是否可以绕过 setter?

我有一个对象o,其原型(prototype)为p:varp={}varo=Object.create(p)可以给对象o添加一个属性a,然后给原型(prototype)p添加一个同名的setter:o.a=1Object.defineProperty(p,'a',{set:function(value){}});console.log(o.a);//1但是,如果我们尝试在setter之后添加属性,它不会添加到o-而是调用setter:Object.defineProperty(p,'a',{set:function(value){}});o.a=1console.log(o.a);//u

javascript - Getter 中的异步函数 w/Return 回调

我想定义一个只读对象属性,它异步获取一个值,然后使用新的EcmaScript5getter返回它。但是,该属性始终返回undefined,即使下面示例代码中的magicValue绝对不会是未定义的。此外,当我只是return'xxx';时,打印的值仍然是undefined。它仅在我在回调函数外return时有效。无论是否调用myAsyncFunction的回调,似乎都立即执行了return。我不确定这是V8中的错误还是我在滥用JavaScript的getter。我可以让它工作吗?我想,既然我现在可以使用getters和setters,我将使用getters/setters来读写属性和常

javascript - 是否有向后兼容的方法来更新库以使用 getter?

假设一个库具有如下功能:classStuff{total(){return4;//mightbesomecalculation}}但是您想更新它以使用setter/getter,例如:classStuff{gettotal(){return4;}}有没有办法以向后兼容的方式进行这样的更改?那么使用库的代码假设函数不会中断?stuff.total//shouldworkwithnewversionstuff.total()//hopefullythisstillworks编辑:这个问题更多是关于图书馆的进化(更一般)。另一个是关于特定的解决方案,并且是从调用站点的Angular来看的。

javascript - 如何在javascript中使用setter和getter,我遇到了一个错误

我的英语不好,但我会尽量简单地解释我的问题。说明:告警结果为1,不知道为什么,我觉得应该是2015年才告警。varbook={};Object.defineProperties(book,{_year:{value:1},edition:{value:23},year:{get:function(){returnthis._year;},set:function(newValue){if(newValue>2004)this._year=newValue;}}});book.year=2015;alert(book.year); 最佳答案

Javascript getters 和 setters - 递归问题

谁能帮我理解'_'字符在javascript的setter和getter中的意义。例如,我有以下代码可以正常工作。varuser={getname(){returnthis._name;},setname(value){this._name=value;}};varme=user;me.name="Rob";alert(me.name);但是如果我删除下划线使我的代码看起来像下面这样,那么我的代码将无法运行并且我在浏览器控制台中收到一个错误,指出“RangeError:超出最大调用堆栈大小。”varuser={getname(){returnthis.name;},setname(va

javascript - Object.assign 构造函数中的 getter 和 setter

我尝试通过Object.assign在构造函数中定义getter和setter:functionClass(){Object.assign(this,{getprop(){console.log('callget')},setprop(v){console.log('callset')},});}varc=newClass();//(1)=>'callget'console.log(c.prop);//(2)=>undefinedc.prop='change';console.log(c.prop);//(3)=>'change'问题:(1)为什么要调用getter?(2)为什么不调用

javascript - 组合 getter 和 setter 方法有什么好处?

我见过一些API,特别是在脚本语言中(我们在我们的团队中使用Perl和JS),它们使用组合的getter和setter方法。例如,在jQuery中://appendsomethingtoelementtextvarelement=$('div#foo');element.text(element.text()+'abc');例如,在Perl的CGI.pm模块中:#readURLparameterfromrequestmy$old_value=$cgi->param('foo');#changevalueofparameterinrequest$cgi->param('foo',$new

javascript - 是否有可能获得对 "setter"的 setter 函数的引用?

例如,在这段代码中varo={seta(value){this.b=value},geta(){returnthis.b}}是否有可能获得对o.a的setter函数的引用,这样如果引用被分配给f那么我可以执行f.call(other,value)在另一个对象上使用它? 最佳答案 给定您的示例对象:varo={seta(value){this.b=value},geta(){returnthis.b}}您可以像这样使用Object.getOwnPropertyDescriptor:varsetter=Object.getOwnProp

javascript - Vue 中的去抖计算属性/getter

我似乎无法去除(lodash)计算属性或vuexgetter。去抖函数总是返回未定义。https://jsfiddle.net/guanzo/yqk0jp1j/2/HTML:computed:{{textComputed}}debounced:{{textDebounced}}JS:newVue({el:'#app',data:{text:''},computed:{textDebounced:_.debounce(function(){returnthis.text},500),textComputed(){returnthis.text}}}) 最佳答案