javascript - 当我在对象内定义属性时,为什么我的 JavaScript 代码给出了引用错误?
问题描述
我是 javascript 和学习对象的初学者。当我运行 initializeDeck 方法时,我收到一个参考错误,指出未定义值/套装。但是,我认为我适当地使用了 this 关键字来访问对象属性。如果有人可以向我解释这一点,那将非常有帮助。
const myDeck = {
deck : [],
suits : ["hearts", "diamonds", "spades", "clubs"],
values : "2,3,4,5,6,7,8,9,10,J,Q,K,A",
initializeDeck : function() {
this.values = values;
this.suits = suits;
}}
console.log(myDeck.initializeDeck());
解决方案
您的函数initializeDeck应该采用一些参数,例如values和suits。上面你正在调用一个没有参数的函数,并试图将一些字段设置为不存在的局部变量。
而是试试这个
const myDeck = {
deck : [],
suits : ["hearts", "diamonds", "spades", "clubs"],
values : "2,3,4,5,6,7,8,9,10,J,Q,K,A",
initializeDeck : function(values, suits) {
this.values = values;
this.suits = suits;
}}
console.log(myDeck.initializeDeck(<someValues>, <someSuits>));
推荐阅读
- c++ - 关于 FFTW3 guru 界面的困惑:3 个同时复杂的 FFT
- mysql - 如何将alter table应用于多个数据库?
- android - 无法从 getter setter 模式中 getJudul
- reactjs - 如何使用带有 Material UI Drawer 的 React Router 来更改点击内容?
- python - 运行示例 python 代码时内核死机
- javascript - 处理“ProtocolDeprecateCallback:不再需要协议模块 API 的回调参数”(Electron 7.0)
- android - SetBackgroundColor 到自定义适配器上的列表视图项不起作用
- ember.js - Ember 并发超时挂在 qunit
- swift - MapKit addAnnotation 与 addAnnotations
- ios - Catalyst 应用的 Firebase 权限被拒绝