gpt4 book ai didi

javascript - 在javascript中复制属性?权威指南第六版?

转载 作者:行者123 更新时间:2023-12-02 19:55:28 27 4
gpt4 key购买 nike

function extend(o, p) {
for(prop in p) {
o[prop] = p[prop];
}
return o;
}
function o() {};
function p(){};
p.name='caicai';
p.show=function(){ alert(this.name);};
p.show(); // output p
extend(o, p);
o.show(); // output o

为什么这里有“输出”?为什么不输出'caicai'。

function extend(o, p) {
for(prop in p) {
o[prop] = p[prop];
}
return o;
}
function o() {};
function p(){};
p.poo='caicai';
p.show=function(){ alert(this.poo);};
p.show(); // output 'caicai'
extend(o, p);
o.show(); // output 'caicai'

但是在这里?为什么这里有“输出”?为什么不输出'caicai'。

最佳答案

第一:这与extend函数无关。

op 是函数。 Function.name [MDN]是非标准属性,不能被覆盖。

示例:

> function foo() {}
undefined
> foo.name
"foo"
> foo.name = 'bar'; // assigning a new value
"bar"
> foo.name // does not work
"foo"

如果您将 op 声明为对象,那么它会起作用:

> var foo = {};
undefined
> foo.name
undefined
> foo.name = 'bar';
"bar"
> foo.name
"bar"

关于javascript - 在javascript中复制属性?权威指南第六版?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8694608/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com