Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有更好的方法向javascript对象添加常量函数?_Javascript_Constants_Javascript Objects - Fatal编程技术网

有没有更好的方法向javascript对象添加常量函数?

有没有更好的方法向javascript对象添加常量函数?,javascript,constants,javascript-objects,Javascript,Constants,Javascript Objects,现在,我正在做这样的事情: var myObject = {} const action = () => { console.log("say hello") } myObject.act = action 这将导致输出: say hello 但是有没有一种更快的方法可以做到这一点,比如常数λ或者别的什么 很像: // This is psuedocode. myObject.myConstAction = const lambda (){ console.log(

现在,我正在做这样的事情:

var myObject = {}

const action = () => {
    console.log("say hello")
}

myObject.act = action
这将导致输出:

say hello
但是有没有一种更快的方法可以做到这一点,比如常数λ或者别的什么

很像:

// This is psuedocode.
myObject.myConstAction = const lambda (){
    console.log("I won't change.")
}

我希望属性.myConstation不能被重新分配或覆盖。

事实上没有任何常量函数或常量之类的东西是对象的属性。最快的方法仍然是

myObject.act=>console.log'say hello'

查看常量标识符如何不起任何作用:

常量myObject={} 常量操作==>{ 你好 } myObject.act=动作; myObject.act=>console.log“再见”;
myObject.act 实际上,没有任何东西是常量函数或常量,任何东西都是对象的属性。最快的方法仍然是

myObject.act=>console.log'say hello'

查看常量标识符如何不起任何作用:

常量myObject={} 常量操作==>{ 你好 } myObject.act=动作; myObject.act=>console.log“再见”;
myObject.act 你搞错了你的代码

动作是一个常量,其值不能更改

myObject.act被分配了动作值的副本,即对同一函数的另一个引用。关于myObject.act,没有什么是不变的

您可以指定一个函数来执行操作,并使属性为只读,如下所示:

var myObject={} Object.definePropertyObject,act{ 值:操作==>{ console.logsayhello; }, 可写:false }; myObject.act; //下一行无效,因为该属性不可写 myObject.act=>console.logoverwrited!;
myObject.act 你搞错了你的代码

动作是一个常量,其值不能更改

myObject.act被分配了动作值的副本,即对同一函数的另一个引用。关于myObject.act,没有什么是不变的

您可以指定一个函数来执行操作,并使属性为只读,如下所示:

var myObject={} Object.definePropertyObject,act{ 值:操作==>{ console.logsayhello; }, 可写:false }; myObject.act; //下一行无效,因为该属性不可写 myObject.act=>console.logoverwrited!;
myObject.act;所以常量对象可以有可变的属性?重新分配和变异是完全不同的概念。const表示永远不能重新分配=左侧的变量名,仅此而已。@nonreature0714使对象本身的属性(而不是嵌套属性)不可变,应用于它。@Xufox感谢您提供关于对象的非常有用的链接。我认为这个答案有效地证明了常量的限制。所以常量对象可以具有可变属性?重新分配和变异是完全不同的概念。const表示永远不能重新分配=左侧的变量名,仅此而已。@nonreature0714使对象本身的属性(而不是嵌套属性)不可变,应用于它。@Xufox感谢您提供关于Object.Freeze的非常有用的链接。我认为这个答案有效地演示了常量的限制。要生成常量函数属性,您必须使用Object.DefinePropertyObject,act,{writable:false,enumerable:true,configurable:false,value:=>console.logsay hello};。常量在这里没有帮助。要生成常量函数属性,必须使用Object.DefinePropertyObject,act,{writable:false,enumerable:true,configurable:false,value:=>console.logsay hello};。const在这里没有帮助。另外,添加configurable:false以禁止用另一个对象覆盖myObject.act.defineProperty。@Quentin这正是我要找的。但是你能在你的答案中加上:false或者解释为什么你不需要它或者不想要它吗?谢谢另外,添加configurable:false以禁止用另一个Object.defineProperty覆盖myObject.act。@Quentin这正是我要找的。但是你能在你的答案中加上:false或者解释为什么你不需要它或者不想要它吗?谢谢