Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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_Browser Plugin - Fatal编程技术网

Javascript 在可编写脚本的浏览器插件中处理只读/写只读属性的最佳方法

Javascript 在可编写脚本的浏览器插件中处理只读/写只读属性的最佳方法,javascript,browser-plugin,Javascript,Browser Plugin,编写一个可通过JavaScript编写脚本的嵌入式跨浏览器插件,我不确定如何以最佳方式处理只读和只读属性 这更常见还是更直观 在写入时以静默方式放弃只读和 返回仅写的伪值 或 指示浏览器出现故障,很可能导致脚本错误 建议?或者像flash这样的广泛使用的插件有什么好的例子吗 更新: 我对只写属性是否有用不感兴趣-我不喜欢这个想法,但出于历史原因,我必须支持它。现有的做法如下:“在你做的事情上要保守;在你接受别人的事情上要自由。” 在这种情况下,这意味着您的插件的文档应该显示正确的用法,但

编写一个可通过JavaScript编写脚本的嵌入式跨浏览器插件,我不确定如何以最佳方式处理只读和只读属性

这更常见还是更直观

  • 在写入时以静默方式放弃只读和
  • 返回仅写的伪值

  • 指示浏览器出现故障,很可能导致脚本错误
建议?或者像flash这样的广泛使用的插件有什么好的例子吗

更新:
我对只写属性是否有用不感兴趣-我不喜欢这个想法,但出于历史原因,我必须支持它。

现有的做法如下:“在你做的事情上要保守;在你接受别人的事情上要自由。”

在这种情况下,这意味着您的插件的文档应该显示正确的用法,但它应该容忍糟糕的用法。通过研究HTML与之前或之后发明的所有其他超文本系统的成功对比,这种方法的智慧应该是显而易见的。大多数失败都是非常束缚和纪律式的设计,其中最小的错误导致文档无法阅读

正如人们经常编写糟糕的HTML一样,您的一些用户可能会向您传递糟糕的输入。假设您有一个布尔属性,记录为“真”或“假”。如果你得到1或0呢?它应该崩溃,还是只是应付?波斯特尔定律说,应对。如果你得到-1呢?同样,通过选择使用C的规则,非零是“真”来应对。说到你的具体问题,如果布尔属性被记录为只读,并且有人给了它一个值,那么你的插件应该把它吃掉

所有这些特殊情况处理意味着为您编写更多的代码,但使您的插件更易于使用,因此更可能受到欢迎

Postel定律的另一半意味着只读属性应该只有文档化的值。同样,以布尔属性为例:如果您的文档说该值为“true”或“false”,则永远不要返回“1”,即使JavaScript认为这是一个真实值。遵循您自己的规范,即使您编写的代码允许其他人违反它而不受惩罚

顺便说一下,我不喜欢只写属性的想法。您应该改为使用这些函数。即:

pluginInstance.setWriteOnlyProperty(5);
不是:

只读变量是很容易理解的东西。只写变量很少出现。我唯一一次看到它是在一个小的8位微控制器中,原因很清楚,因为硬件设计。我看不出在软件中有这样好的借口的余地。

现有的做法如下:“在你做的事情上要保守;在你接受别人的事情上要自由。”

在这种情况下,这意味着您的插件的文档应该显示正确的用法,但它应该容忍糟糕的用法。通过研究HTML与之前或之后发明的所有其他超文本系统的成功对比,这种方法的智慧应该是显而易见的。大多数失败都是非常束缚和纪律式的设计,其中最小的错误导致文档无法阅读

正如人们经常编写糟糕的HTML一样,您的一些用户可能会向您传递糟糕的输入。假设您有一个布尔属性,记录为“真”或“假”。如果你得到1或0呢?它应该崩溃,还是只是应付?波斯特尔定律说,应对。如果你得到-1呢?同样,通过选择使用C的规则,非零是“真”来应对。说到你的具体问题,如果布尔属性被记录为只读,并且有人给了它一个值,那么你的插件应该把它吃掉

所有这些特殊情况处理意味着为您编写更多的代码,但使您的插件更易于使用,因此更可能受到欢迎

Postel定律的另一半意味着只读属性应该只有文档化的值。同样,以布尔属性为例:如果您的文档说该值为“true”或“false”,则永远不要返回“1”,即使JavaScript认为这是一个真实值。遵循您自己的规范,即使您编写的代码允许其他人违反它而不受惩罚

顺便说一下,我不喜欢只写属性的想法。您应该改为使用这些函数。即:

pluginInstance.setWriteOnlyProperty(5);
不是:


只读变量是很容易理解的东西。只写变量很少出现。我唯一一次看到它是在一个小的8位微控制器中,原因很清楚,因为硬件设计。我看不出在软件中有这么好的借口。

我不会默默地放弃值,即使您在文档中非常清楚地说明了这一点。如果语句没有返回任何类型的错误,那么它看起来应该有效果。如果您得到一条清晰的错误消息(“属性x是只读的”),那么调试就更容易了


不过,就只写函数而言,我同意Warren Young的回答。仅写属性是不直观的。

即使您在文档中非常清楚地说明了这一点,我也不会默默地放弃值。如果语句没有返回任何类型的错误,那么它看起来应该有效果。如果您得到一条清晰的错误消息(“属性x是只读的”),那么调试就更容易了


不过,就只写函数而言,我同意Warren Young的回答。只写属性是不直观的。

这种方法的问题是,如果坏的用法有效,你会含蓄地承诺始终支持它。另请参见Joel Spolsky在其中谈到Postel定律“坦白说不是一个好的工程原理”。这就是世界范围的分布式系统的生活。你不能强迫良好的行为,也不能把所有的客户都拖到当前的实践中去。如果你不愿意遵循波斯特定律,你就没有必要尝试在十年或更长的时间内制造出在世界范围内使用的东西,因为人们最终会变得节俭