问题标签 [defineproperty]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - 如何从原型重新定义属性?
如何p
从对象的原型中删除属性?
这会产生TypeError: Cannot redefine property: p。有没有办法可以删除该属性并重新添加它?或者是否可以在configurable
创建属性后设置属性?
javascript - IE11 错误,对象不支持属性或方法“defineProperty”
好的,所以我有这段代码,但这是一个简化版本:
所以我的设置是:
- 铬v40.0.2214.94 米
- IE v11.0.9600.16428
- IIS v7.5.7600.16385
当我打开任一浏览器并打开上述文件时:
IE ==> C:\site\proj\default.htm
Chrome ==> file:///C:/site/proj/default.htm
两种浏览器都显示正确的结果:2
......但是当我这样打开文件时:
IE ==> http://门户/proj/default.htm
Chrome ==> http://门户/proj/default.htm
其中portal是localhost站点的名称,在IIS中设置。
IE显示undefined
并引发以下控制台错误:
对象不支持属性或方法“defineProperty”
虽然Chrome仍能2
正确显示。
所以,我想我的问题是......
IIS是否会更改IE的“兼容模式”之类的,还是我只需要更新到更新版本的IIS?
思考是...
我第一次玩.hta
文件&我正在编写一个Array.prototype.indexOf
属性,因为我在尝试访问.indexOf
数组时收到与上面类似的错误消息......
问题是,我想让新indexOf
属性enumerable,所以我曾经Object.defineProperty
将属性设置为enumerable,这就是我最终在 Stack'...
javascript - 在 Object.defineProperty 中调用父级实现
我使用 javascript 原型继承,其中 A “继承” B. B 用于defineProperty
为 property 定义 setter prop
。在 AI 中想要覆盖这种行为:
以这种方式调用基本实现不起作用,因为this
指针将是错误的。我需要打电话B.prototype.prop.set.call(this, val);
来修复它,但这不起作用。
对任何想法都会很感激!
编辑:根据需要,我添加了更多代码。
javascript - Object.defineProperty 数据绑定范围
我一直在使用 javascriptObject.defineProperty
来创建数据绑定。我确实让它工作了。我的问题与其他事情有关。
我有一个 for html 查询来查找具有属性“数据绑定”的元素,并在 for 循环中循环遍历它们。从 for 循环中,我调用一个函数来通过 setter 属性绑定它们:
// 调用自
由于我在 for 循环中调用此函数,我想我不妨将它集成到那里,但这里是我的问题出现的地方。它无法正常工作,仅在设置对象时分配最后一个值。为什么第一个示例工作正常而第二个示例失败,而我认为它们是类似的调用。有人能抓住我的好奇心吗?
javascript - 使用 Object.defineProperty 定义的属性的 Javascript 继承
我有以下父类...
和相应的子类:
我试图通过添加类似 Child.prototype = Object.create(Parent.prototype);的东西来应用继承。 ,但这显然行不通。
如何从 Parent 类继承,以便可以使用属性 id 和 name。
javascript - Javascript - defineProperty 和直接在对象上定义函数之间的区别
我最近为 node.js 创建了自己的模块,用于 koa 模块。它是一个类似 koa-i18n 的翻译模块。我研究了其他 koa 模块,以了解如何将函数/属性应用于 koa 上下文/请求,其中一些使用 Object.defineProperty 函数,但我在模块中所做的是直接在“this”上应用函数。
那么,使用和使用有什么区别
和
我还遇到了使用“应用”功能的节点委托模块。这些方法中的哪一种是将函数/属性应用于现有对象的首选方法,优缺点是什么?
javascript - 使用返回数组的 Object.defineProperty 重新定义 .push()
Object.defineProperty
如果我在通过调用返回数组的构造函数原型创建的对象上有一个属性,例如:
如何捕获和覆盖.push()
对派生bar
属性的调用?
javascript - Object.defineProperty 与普通属性
考虑到基本的使用场景,做
和
在支持的浏览器中表现完全相同?
我们是否可以仅仅因为有利的语法而在 ES6 之前的应用程序中回退到 vanilla,或者将它们混合使用而没有任何副作用?
javascript - 使用 jQuery 时扩展 object.prototype 的替代方法
前段时间我试图扩展Object.prototype
......当后来我在控制台中看到来自 jQuery 文件的错误时,我感到很惊讶。我试图找出问题所在,当然我发现扩展Object.prototype
是“邪恶”的信息,“你不应该这样做,因为 JS 是动态语言,你的代码不会很快工作”以及 jQuery 现在将添加hasOwnProperty
方法的信息到他们的for in
循环。
因为我不想离开 jQuery,所以我放弃了扩展Object.prototype
.
直到现在。我的项目越来越大,我真的很生气,因为我必须多次重复代码的某些部分。以下是我在项目中使用的一些结构:
图表.js:
仪表板.js
正如我提到的,项目现在真的很大——它有 40 多个 js 文件,其中一些有几千行代码。_init
我每次都必须重复部分真的很烦人,还有很多功能我必须重复$(document).ready
&& $(window).load
。
我试图为我的问题找到另一种解决方案。我尝试创建具有init
属性的类(您可以在此处找到更多),但我这个解决方案迫使我向每个文件添加另一个“不必要”的代码片段,并且访问其他文件对象属性也使其变得复杂(在任何地方返回适当的对象等)。正如评论中所建议的,我开始阅读 JS 中的 getter 和 setter。
毕竟我创造了这样的东西:
和我的对象:
这个解决方案似乎适用于 jQuery。但是使用起来安全吗?我没有看到代码可能导致的任何问题,也没有看到它可能导致的任何进一步问题。如果有人告诉我为什么我不应该使用这个解决方案,我会非常高兴。
此外,我正在尝试详细了解它的工作原理。Object.prototype
从理论上讲,我为by定义了属性defineProperty
,但没有为其赋值。不知何故,它不会在 jQueryfore in
循环中导致任何错误,为什么?这是否意味着_init
在某些时候或根本没有定义属性,因为我只定义了它的 getter?
任何帮助将不胜感激 :)
javascript - 来自 getter 方法的意外参考
这是一个包含字符串列表的对象(valuesDictionnary
),这些字符串可以从对象外部读取,并将 getter 列表设置为对象(gettersDictionnary
)的属性。
这种奇怪的结构用于使列表的字符串从外部不可配置,但可配置,因此可以从内部移除。
重点是,当从对象外部向其中一个 getter("anyValue") 发送“删除”指令时,它应该以销毁“返回”运算符给出的列表中包含的字符串结束,不与变量中包含的字符串一起销毁gettersDictionnary
。但确实如此。
然后我问为什么在这种情况下“return”运算符似乎给出了对变量的引用gettersDictionnary
,而不是它应该做的值。
最后一个console.log
应该给出“问题”,为什么没有?
这是完整的代码片段: