javascript - 在 JavaScript 中,如果我分配给一个有 getter 但没有 setter 的对象属性会发生什么?

标签 javascript object properties getter-setter

在下面的代码中,console.log(o.x) 都打印了 1。赋值 o.x = 2 会发生什么?只是被忽略了吗?

var o = {
    get x() {
        return 1;
    }
}

console.log(o.x);  // 1
o.x = 2
console.log(o.x);  // 1

最佳答案

在 sloppy 模式下,是的,它会被忽略——“分配”的值将被丢弃。但是在严格模式下(推荐),会抛出如下错误:

Uncaught TypeError: Cannot set property x of #<Object> which has only a getter

'use strict';
var o = {
    get x() {
        return 1;
    }
}

console.log(o.x);  // 1
o.x = 2

关于javascript - 在 JavaScript 中,如果我分配给一个有 getter 但没有 setter 的对象属性会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53579207/

相关文章:

javascript - 向对象添加元素

c# - 检测类属性是否为引用类型

C# - 属性说明

php - 继承php中的属性

javascript - 在网格上查找空白空间的算法

java - GWT 中的正则表达式以匹配 URL

javascript - 这个符号在JavaScript中是什么意思?

javascript - 使用 Underscore.js 从对象中删除空属性/虚假值

javascript - 在javascript中用数组替换字符串中的多个单词

javascript:传回对象时出错