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'。
答案 0 :(得分:2)
首先:这与extend
功能无关。
o
和p
是函数。 Function.name
[MDN]是非标准属性,无法覆盖。
示例:
> function foo() {}
undefined
> foo.name
"foo"
> foo.name = 'bar'; // assigning a new value
"bar"
> foo.name // does not work
"foo"
如果您将o
和p
声明为对象,那么它会起作用:
> var foo = {};
undefined
> foo.name
undefined
> foo.name = 'bar';
"bar"
> foo.name
"bar"