JavaScript对象包含继承属性
我有一个网页,当我尝试在其中创建JavaScript对象时,使用: var myVar={}JavaScript对象包含继承属性,javascript,Javascript,我有一个网页,当我尝试在其中创建JavaScript对象时,使用: var myVar={} 生成的对象始终包含一个继承属性,这会干扰我的代码,并且不会发生,除非仅在本页上,有人知道原因吗?有人离开了,并在对象上放置了一些东西。prototype。自己检查一下: for(var k in {}) alert(k); // should get NO alerts 至于跟踪它,使用上面的输出搜索您的代码库。首先要检查的是包含在标记中的任何外部库。例如,原型库的真正旧版本增加了Object.Pro
生成的对象始终包含一个继承属性,这会干扰我的代码,并且不会发生,除非仅在本页上,有人知道原因吗?有人离开了,并在
对象上放置了一些东西。prototype
。自己检查一下:
for(var k in {}) alert(k); // should get NO alerts
至于跟踪它,使用上面的输出搜索您的代码库。首先要检查的是包含在
标记中的任何外部库。例如,原型库的真正旧版本增加了Object.Prototype
更新@Ahmad的回复:
你有两个选择:
Object.inherit = function(obj, superClass, superClassName) {
/* change "this" to "obj" all throughout the code here */
}
并重构所有执行以下操作的位置:
foo.inherit(a, b)
改为:
Object.inherit(foo, a, b)
显然,这种方法可能需要大量的重新分解工作。这样做的好处是您可以将对象.prototype
放在一边Object.prototype.inherit=…
的代码保持独立,而是重构您正在尝试编写的代码以供使用,这将告诉您是否已直接在对象上设置了属性(即,无需费力通过对象的原型链):
当然,在以后的for..in
代码进入代码库时,要明智地使用hasOwnProperty
你既可以清理你的代码库,也可以防止其他库输入改变
Object.prototype
自身的代码。有人去给Object.prototype添加了一些东西。自己检查一下:
for(var k in {}) alert(k); // should get NO alerts
至于跟踪它,使用上面的输出搜索您的代码库。首先要检查的是包含在
标记中的任何外部库。例如,原型库的真正旧版本增加了Object.Prototype
更新@Ahmad的回复:
你有两个选择:
将实现从原型中移出,改为将要扩展的对象作为第一个参数,例如:
Object.inherit = function(obj, superClass, superClassName) {
/* change "this" to "obj" all throughout the code here */
}
并重构所有执行以下操作的位置:
foo.inherit(a, b)
改为:
Object.inherit(foo, a, b)
显然,这种方法可能需要大量的重新分解工作。这样做的好处是您可以将对象.prototype
放在一边
第二种方法是让执行Object.prototype.inherit=…
的代码保持独立,而是重构您正在尝试编写的代码以供使用,这将告诉您是否已直接在对象上设置了属性(即,无需费力通过对象的原型链):
当然,在以后的for..in
代码进入代码库时,要明智地使用hasOwnProperty
您可以这样做,既可以清理代码库,又可以防止其他库输入更改Object.prototype本身的代码。可能您包含的某些脚本正在修改Object.prototype以添加其自己的自定义函数。可能您包含的某些脚本正在修改Object.prototype添加自己的自定义函数。这不是库错误,有一个js文件将继承函数添加到对象原型中,如下所示:Object.prototype.inherit=function(superClass,superClassName){…};您知道如何在不删除上述内容的情况下修复此问题吗?因为页面的其他部分需要它,这不是库错误,所以有一个js文件将继承函数添加到对象原型中,如下所示:Object.prototype.inherit=function(superClass,superClassName){…};您知道如何在不删除上述内容的情况下修复此问题吗?因为页面的其他部分需要它