访问者:setter不起作用
Accessors: setter does not work
我正在玩Javascript访问器属性(我从零开始学习Javascript),试图为一个简单的对象创建getter和setter,这里的代码是:
var dummy = {
name: 'empty',
description: 'static description',
get nameAccessor(){return 'name value is: ' + this.name;},
set nameAccessor(value){ this.name = value;},
get descAccessor(){return 'desccription value is: ' + this.description;},
};
console.log(dummy.nameAccessor);
console.log(dummy.nameAccessor('Mazinga'));
console.log(dummy.nameAccessor);
但它抛出了一个错误:
未捕获的类型错误:对象#的属性"nameAccessor"不是功能
当它执行setter代码时:
console.log(dummy.nameAccessor('Mazinga'));
这里出了什么问题?
编辑:
好吧,这似乎不是javascript的一个众所周知的特性,但我从Javascript:最终指南
var o = {
data_prop: value,
get accessor_prop() { /* function body here */ },
set accessor_prop(value) { /* function body here */ }
};
访问器不是作为对象属性("方法")的函数,而是在分配(设置)或检索(获取)该属性时调用的函数。使用
dummy.nameAccessor = 'Mazinga';
调用setter函数。
相反,dummy.nameAccessor('Mazinga')
获取属性"nameAccessor"(这会产生名称字符串),然后尝试将其作为函数调用,但会失败。如果getter返回一个函数,它会起作用,但这不是您想要的。
dummy.nameAccessor
不是函数,而是字符串name value is: empty
。
您的方法语法不正确,请尝试:
var dummy = {
name: 'empty',
description: 'static description',
getName : function(){return 'name value is: ' + this.name;},
setName : function(value){ this.name = value;},
getDesc : function(){return 'description value is: ' + this.description;}
};
相关文章:
- electronic BrowserWindow的最小高度和宽度在hide()show()方法之后不起作用
- 监视函数从服务返回不起作用,但作用域函数起作用
- 幻灯片滚动javascript不起作用
- 简单的javascript在Shopify中不起作用
- Recaptcha在IE7和IE8中不起作用
- Ember Data DS.Model's set函数不起作用
- JsFiddle上的鼠标事件不起作用
- 我的AngularJS表达式没有'不起作用
- 点击按钮输入不起作用
- 面向对象的Javascript代码在IE7中不起作用
- 分部隐藏在jquery中不起作用
- 在phonegap应用程序内部重定向不起作用
- Array.length似乎不起作用;console.log则显示其他情况
- $ionicplatform内的$scope不;不起作用
- 我的javascript for循环不起作用
- Meteor-添加用户自定义字段的方法不起作用
- 访问者:setter不起作用
- Sencha Touch-HasOne Setter没有'似乎不起作用
- Sequelize setter不起作用
- JavaScript - Objects's Prototype 中的 getter/setter 不起作用.Gette