Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.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 - Fatal编程技术网

JavaScript对象包含继承属性

JavaScript对象包含继承属性,javascript,Javascript,我有一个网页,当我尝试在其中创建JavaScript对象时,使用: var myVar={} 生成的对象始终包含一个继承属性,这会干扰我的代码,并且不会发生,除非仅在本页上,有人知道原因吗?有人离开了,并在对象上放置了一些东西。prototype。自己检查一下: for(var k in {}) alert(k); // should get NO alerts 至于跟踪它,使用上面的输出搜索您的代码库。首先要检查的是包含在标记中的任何外部库。例如,原型库的真正旧版本增加了Object.Pro

我有一个网页,当我尝试在其中创建JavaScript对象时,使用:

var myVar={}


生成的对象始终包含一个继承属性,这会干扰我的代码,并且不会发生,除非仅在本页上,有人知道原因吗?

有人离开了,并在
对象上放置了一些东西。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){…};您知道如何在不删除上述内容的情况下修复此问题吗?因为页面的其他部分需要它