Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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:名为";名称“;在chrome/ff中为空,而在IE中为空_Javascript_Internet Explorer_Google Chrome_Inheritance - Fatal编程技术网

Javascript:名为";名称“;在chrome/ff中为空,而在IE中为空

Javascript:名为";名称“;在chrome/ff中为空,而在IE中为空,javascript,internet-explorer,google-chrome,inheritance,Javascript,Internet Explorer,Google Chrome,Inheritance,名为“name”的属性声明始终是空字符串,无论我对其强制(硬编码)了多少值。奇怪的是,这似乎只发生在Chrome和Firefox上。IE工作得非常好,我甚至没有为IE做这个 这里有一个小片段来重现这个问题: var fn = function() { this.name = "Hello World" this.foo = "bar" } // Create a blank function. var obj = function() {}; // replacing the

名为“name”的属性声明始终是空字符串,无论我对其强制(硬编码)了多少值。奇怪的是,这似乎只发生在Chrome和Firefox上。IE工作得非常好,我甚至没有为IE做这个

这里有一个小片段来重现这个问题:

var fn = function() {
    this.name = "Hello World"
    this.foo = "bar"
}

// Create a blank function.
var obj = function() {};

// replacing the code below with 'var o = new fn()' doesn't make a difference.
var o = Object.create(fn.prototype);
fn.apply(o);

for (var i in o) {
    // This line will print:
    //     name = Hello World
    //     foo = bar
    console.log(i + ' = ' + o[i]);

    // Apply them to the 'empty' function.
    obj[i] = o[i];
}

console.log(obj.name);  // prints ""
console.log(obj.foo);   // prints "bar"

// Hardcode a value, just because I'm aggresive and frustrated.
obj.name = "test?"
console.log(obj.name); // still prints empty string :(

我不想听到对象构造的替代方案,我只想知道为什么这个特定的实现在Chrome和FF中不起作用,而在所有IE版本中都起作用,包括11。obj是一个函数,并且函数已经有一个
名称
属性,它内置在原型中,即使没有给函数命名,以后也不能更改函数名,它甚至在规范中

无法更改函数的名称,此属性为只读:


如果它在IE中工作,那么IE是错误的。

obj
是一个函数,并且一个函数已经有了一个
名称
属性,它内置在原型中,即使您没有给函数命名,以后也不能更改函数名称,它甚至在规范中

无法更改函数的名称,此属性为只读:


如果它在IE中工作,那么IE是错误的。

obj
是一个函数,并且一个函数已经有了一个
名称
属性,它内置在原型中,即使您没有给函数命名,以后也不能更改函数名称,它甚至在规范中

无法更改函数的名称,此属性为只读:


如果它在IE中工作,那么IE是错误的。

obj
是一个函数,并且一个函数已经有了一个
名称
属性,它内置在原型中,即使您没有给函数命名,以后也不能更改函数名称,它甚至在规范中

无法更改函数的名称,此属性为只读:


如果它在IE中工作,那么IE是错误的。

name已经是某些浏览器中函数的属性

或“”用于匿名函数

var obj = function testfun() {};
obj.name

/*  returned value: (String) testfun */
尽管您对对象创建语法不感兴趣

对象(但不是函数)可以具有名称“test”:

var obj2={};
obj2.name='test';

obj2.name
/*  returned value: (String) test */

name已经是某些浏览器中函数的属性

或“”用于匿名函数

var obj = function testfun() {};
obj.name

/*  returned value: (String) testfun */
尽管您对对象创建语法不感兴趣

对象(但不是函数)可以具有名称“test”:

var obj2={};
obj2.name='test';

obj2.name
/*  returned value: (String) test */

name已经是某些浏览器中函数的属性

或“”用于匿名函数

var obj = function testfun() {};
obj.name

/*  returned value: (String) testfun */
尽管您对对象创建语法不感兴趣

对象(但不是函数)可以具有名称“test”:

var obj2={};
obj2.name='test';

obj2.name
/*  returned value: (String) test */

name已经是某些浏览器中函数的属性

或“”用于匿名函数

var obj = function testfun() {};
obj.name

/*  returned value: (String) testfun */
尽管您对对象创建语法不感兴趣

对象(但不是函数)可以具有名称“test”:

var obj2={};
obj2.name='test';

obj2.name
/*  returned value: (String) test */


这显然是因为
obj
是一个函数,而且一个函数已经有了
name
属性,它内置在原型中,即使你没有给函数命名,你以后也不能更改函数名。^^^是的,只要试试
var obj=function lulz(){}
你就会看到“lulz”.可能的重复以及它与IE一起工作的原因是因为IE很奇怪。:)这显然是因为
obj
是一个函数,而且一个函数已经有了
name
属性,它内置在原型中,即使你没有给函数命名,你以后也不能更改函数名。^^^是的,只要试试
var obj=function lulz(){}
你就会看到“lulz”.可能的重复以及它与IE一起工作的原因是因为IE很奇怪。:)这显然是因为
obj
是一个函数,而且一个函数已经有了
name
属性,它内置在原型中,即使你没有给函数命名,你以后也不能更改函数名。^^^是的,只要试试
var obj=function lulz(){}
你就会看到“lulz”.可能的重复以及它与IE一起工作的原因是因为IE很奇怪。:)这显然是因为
obj
是一个函数,而且一个函数已经有了
name
属性,它内置在原型中,即使你没有给函数命名,你以后也不能更改函数名。^^^是的,只要试试
var obj=function lulz(){}
你就会看到“lulz”.可能的重复以及它与IE一起工作的原因是因为IE很奇怪。:)我无意更改函数的整个名称。我只想有一个名为“name”的属性:(@Harold-但对象是一个函数,它已经有了name属性,它是你给函数的名称或一个空字符串,你不能改变它。你必须使用另一个属性或一个不是函数的对象。好吧,很高兴知道我这方面不是一个奇怪的bug:)谢谢你的回答。(可以在3分钟内标记为已接受)。我无意更改函数的完整名称。我只想有一个名为“name”的属性:(@Harold-但对象是一个函数,它已经有了name属性,它是你给函数的名称或一个空字符串,你不能改变它。你必须使用另一个属性或一个不是函数的对象。好吧,很高兴知道我这方面不是一个奇怪的bug:)谢谢你的回答。(可以在3分钟内标记为已接受)。我无意更改函数的完整名称。我只想有一个名为“name”的属性(@Harold-但对象是一个函数,它已经有了name属性,它是您给函数的名称或空字符串,您不能更改它。