You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript构造函数嵌套对象存储参数的问题求助

解析Shape构造函数的错误写法

咱们一步步拆解你代码里的问题,结合你能理解的Car示例来对比:

错误点1:对象字面量语法错误

你在创建position对象时写了:

const position = {
    this.x = x
    this.y = y
}

这完全不符合JavaScript对象字面量的语法规则:

  • 对象内部的属性必须是键值对形式,格式是键: 值,比如x: x
  • 多个键值对之间必须用逗号分隔
  • 这里不需要用this,因为x和y是构造函数的参数,直接引用即可

错误点2:没有将position挂载到实例(this)上

你用const position声明了一个局部变量,这个变量只在Shape函数内部有效,外部的实例(比如const shape = new Shape(5,10))根本访问不到它。

回忆你能理解的Car示例:

function Car(make, model) {
    this.make = make; // 直接给实例的make属性赋值
    this.model = model;
}

这里是把值直接赋值给this的属性,这样实例才能访问到。同理,Shape需要把position对象赋值给this.position,而不是声明一个局部变量。

错误点3:错误理解了this的使用场景

在你写的对象内部用this.x是完全没必要的,甚至是错误的——这里的this指向的是当前实例,但你在一个局部对象里这么写,既不符合语法,也偏离了需求:需求是让实例的position属性包含x和y,而不是让position对象里的属性指向实例的x/y。

结合正确思路梳理

按照Car的逻辑,我们需要给实例(this)添加一个position属性,这个属性是一个对象,里面包含x和y两个属性,对应传入的参数:

  1. 给this.position赋值一个新对象
  2. 对象内部用键值对存储参数x和y

现在你可以自己试着修正代码,对比测试用例的要求来验证。

内容的提问来源于stack exchange,提问作者Matteo V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 16:40:01