- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
为什么 person1 的“name”属性是“undefined”而 person2 的“name”属性有值?
const person1 = {
set name(newName) {
console.log(newName)
}
}
const person2 = {}
Object.assign(person2, person1)
person1.name = 'x'
// logs "x"
person2.name = 'z'
// doesnt log anything
console.log("Person1", person1)
// "Person1" Object {
// name: undefined
// }
console.log("Person2", person2)
// "Person2" Object {
// name: "z"
// }
最佳答案
您所观察到的是 Object.assign()
的默认行为的结果.
如果该属性没有在对象中定义,而只定义了一个setter,任何直接访问该属性的尝试都将返回undefined
。 .您应该定义属性 name
在person1
或者以 person1.name
的形式访问它.
这就是为什么当您登录 person1
时, name
是undefined
.
person1.name
返回未定义,因为 person1
只有一个 setter
没有 getter
当这两行被执行时,
const person2 = {}
Object.assign(person2, person1)
getters 和 setters 没有被复制到 Object.assign()
中但是它们被调用并在此过程中创建新属性。自 set name(newName)
没有等效的 getter
或属性(property)name
在person1
, name
属性(property) person2
已分配 undefined
在Object.assign()
期间.所以这将是你的 person2
在 Object.assign()
的末尾
person2 = { name: undefined };
没有任何 getter 或 setter。
并且,当你调用这一行时
person2.name = 'z'
name 属性被赋予值 z
.
person2.name
正在返回值,因为 person2
没有 getter 或 setter,只返回分配的值。
关于javascript - javascript 中的二传手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53460060/
我是 Scala 的新手,具有基本的 Java 背景。我研究了如何实现类构造函数以及如何在 setter 中为该类的字段提供一些逻辑。 class SetterTest(private var _x:
我想知道的是,当我们可以简单地将值直接分配给私有(private)对象时,为什么我们需要私有(private) setter?考虑以下代码: private int counter = 0; publ
我试图为 recordingStatus 赋值 -即recordingStatus = 1但它没有进入我想要一些自定义代码的 setter ..我的代码有什么问题? 谢谢。 码头。 在文件.h中 @p
仍在习惯 Entity Framework ,但我已经看到如下代码,它们在实体中为 id 设置了私有(private) setter 。 public int Id { get; private se
省略 setter 的属性和带有私有(private) setter 的属性有什么区别? public string Foo { get; private set; } 对比 public strin
我不明白拥有以 C# 2 开头的私有(private) setter 的必要性。 对我来说有一个 setter 方法就是让用户在那个类中设置一些变量。这样做时,我们不会将变量直接暴露给用户。相反,我们
我有一个 QObject,其属性可从 QML 访问。 就像是: Class C : public QObject { Q_OBJECT public: explicit C(QObject * par
有没有办法在 TypeScript 中为属性设置私有(private) setter? class Test { private _prop: string; public get p
我一直在寻找,但找不到任何相关的引用资料。我想在 Dart 中创建一个私有(private) setter,以便在更改私有(private)变量后调用附加函数。 ViewState _state; V
这是由apple提供的pint结构setter getter介绍的point example如何让只有二传手私有(private) struct Point { var x = 0.0, y
我编写了一个自定义序列化程序,它通过反射设置对象属性来工作。可序列化类使用可序列化属性进行标记,所有可序列化属性也进行标记。例如,下面的类是可序列化的: [Serializable] public c
我知道有一个属性可以处理私有(private) setter ,但我有点希望将此行为作为默认行为,有没有办法实现这一点?除了调整来源。如果有这样的设置就好了。 最佳答案 我来这里是为了寻找使 Json
我是一名优秀的程序员,十分优秀!