本帖最后由 hu_sa 于 2021-3-30 00:46 编辑
很有意思的题目,个人理解,欢迎指正讨论:
[Java] 纯文本查看 复制代码 function foo() {
this.a = 100;
this.b = 200;
}
function goo() {
this.c = 300;
this.d = 400;
}
var seed = new foo();
//1
foo.prototype.fuss = function(fn) {
fn.prototype = seed; //prototype 很特殊,特殊到需要仔细研究,结合下面的参数,这里可以理解为直接prototype赋值为上面定义的对象seed,有些说这样的赋值无效,但是就是奇怪的可以
seed = new fn; //seed 为new goo(),也就是{c: 300,d: 400, prototype: foo:{a: 100,b: 200}
//2
return this; //这里是重点,实际返回的原型对象,而不是seed实例,可以理解为就是继承的对象,一个隐藏的~哎,底层也不是很懂。。。
//原型对象内部也有一个指针(constructor属性)指向构造函数:foo.prototype.constructor = foo;
//3
}
var a = seed.fuss(goo);
console.log(a.c); //undefined
console.log(a === seed); //false
console.log(seed.a); //100
把16行中返回seed,哈哈就是true咯,很值得深入研究的题目。 |